主要是堆,栈,数据段,代码段,这四个
C语言中的内存管理
malloc/realloc/calloc/free
C++
C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理
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;
}
int main() {
Test();
return 0;
}
在使用new和delete的时候有一个点需要注意那就是delete[ ],
比如:
这个代码看上去没有什么错误,申请的也释放了
但是错误在ptr1这个的delete上,我们申请的是数组,但是我们的释放方式确实在释放一个对象,这样的释放的结果是未定义的,看编译器的处理,不管怎么说这样的操作是不可取的,“new连续的空间在释放的时候也一定要用delete [ ],反之,申请一个对象用delete[ ]也是未定义的,我们要严格匹配,这可不是个小问题