内存分布:
内存主要分为五个部分分别是堆区栈区数据段代码段内存映射段。
1. 栈又叫堆栈--非静态局部变量/函数参数/返回值等等,栈是向下增长的。
2. 内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。
3. 堆用于程序运行时动态内存分配,堆是可以上增长的。
4. 数据段--存储全局数据和静态数据。
5. 代码段--可执行的代码/只读常量
内存管理:
C语言在内存管理上一般使用的函数主要是malloc,realloc,calloc和free但c++又引进了new和deleat。但是new和deleat是操作符而不是函数要分清。
void Test()
{
// 动态申请一个int类型的空间
int* ptr4 = new int;
// 动态申请一个int类型的空间并初始化为10
int* ptr5 = new int(10);
// 动态申请10个int类型的空间
int* ptr6 = new int[3];
delete ptr4;
delete ptr5;
delete[] ptr6;
}
deleat和new与之前的函数最主要的区别出来写法简单了不少还有就是在申请类的空间时会自动调用析构函数和构造函数。
注意在使用这些函数或操作符的时候要想对应的使用不然有时候会导致内存的泄露甚至程序的崩溃