2.【干货】火爆全网的《超全C++进阶精品教程》C++运行原理和

2023-04-06  本文已影响0人  鹏城十八少

学习内存、编译和链接,弄清编程语言的内在机理。

学习内存、编译和链接,弄清编程语言的内在机理。

C++ 支持面向过程编程、面向对象编程和泛型编程

动态库和静态库: 

谁能简单明白易懂说明一下.a .o .so 这几个文件到底啥区别

1、是静态库类似NT下的lib

2、是对象文件。就是编译成程序时的半成品。

3、是动态库类似NT下的DLL

程序运行的流程:

操作系统会把物理硬盘上的代码 load 到内存

加载到内存后会把 c 代码分成 4 个区

然后系统会找到 main 函数的入口去执行

回调采用的2种方式

1. c++种的接口

2. c中的函数指针

函数调用是有时间和空间开销的。程序在执行一个函数之前需要做一些准备工作,要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;函数体中的代码执行完毕后还要清理现场,将之前压入栈中的数据都出栈,才能接着执行函数调用位置以后的代码

C/C++ 代码生成可执行文件的过程:

need-to-insert-img

8. c++底层原理(汇编)

栈平衡: 

c++ 编译后盛出的是啥?

 32位编译器:

      char :1个字节

      char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

      short int : 2个字节

      int:  4个字节

      unsigned int : 4个字节

      float:  4个字节

      double:   8个字节

      long:   4个字节

      long long:  8个字节

      unsigned long:  4个字节

  64位编译器:

      char :1个字节

      char*(即指针变量): 8个字节

      short int : 2个字节

      int:  4个字节

      unsigned int : 4个字节

      float:  4个字节

      double:   8个字节

      long:   8个字节

      long long:  8个字节

      unsigned long:  8个字节

在VS中,不管是32位系统还是64位系统,int型都是4字节,只有指针类型不同(因为地址位数不同,造成寻址不同,造成指针大小不同)

————————————————

7. 深拷贝和浅拷贝

浅拷贝:简单的赋值拷贝操作(这个是系统默认提供的)

深拷贝:在堆区重新释放空间,进行拷贝操作(要自己写的)

简单来说,只要类属性里有指针等就必须利用深拷贝操作

demo: 

https://blog.csdn.net/qq_62512411/article/details/127665417

上一篇下一篇

猜你喜欢

热点阅读