malloc/free 和 new/delete

int *p = (int*) malloc( sizeof(int) * 10 );  //分配10个int型的内存空间
free(p);  //释放内存
int *p = new int;  //分配1个int型的内存空间
delete p;  //释放内存
int *p = new int[10];  //分配10个int型的内存空间
delete[] p;

和 malloc() 一样,new 也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。为了避免内存泄露,通常 new 和 delete、new[] 和 delete[] 操作符应该成对出现。

C++ 中的 new 和 delete 分别用来分配和释放内存,它们与C语言中 malloc()、free() 最大的一个不同之处在于

  • 用 new 分配内存时会调用构造函数,用 delete 释放内存时会调用析构函数。构造函数和析构函数对于类来说是不可或缺的,所以在C++中我们非常鼓励使用 new 和 delete。
发布了30 篇原创文章 · 获赞 5 · 访问量 2202

猜你喜欢

转载自blog.csdn.net/weixin_44408476/article/details/105196890