C++ | C++ new和delete运算符简介
在c语言中,使用malloc
动态申请内存和使用free
释放申请的内存。
实例1:
/*******************************************************************
* > File Name: malloc.c
* > Create Time: Wed Sep 1 17:19:26 2021
******************************************************************/
#include
#include
int main(int argc, char* argv[])
{
int *p = (int *)malloc(sizeof(int));
printf("p = %pn", p);
free(p);
return 0;
}
编译、运行:
lanfeiy@yelanfei ~/workspace/test
gcc -o malloc malloc.c -g -Wall
lanfeiy@yelanfei ~/workspace/test
$ ./malloc.exe
p = 0x8000003b0
C++新增了两个关键字,new
和 delete
:new
用来动态分配内存,delete
用来释放内存。
实例2:
/*******************************************************************
* > File Name: new.cpp
* > Create Time: Wed Sep 1 17:14:16 2021
******************************************************************/
#include
using namespace std;
int main(void)
{
int *p = new int; /*申请*/
cout cout delete p; /*释放*/
int *p1 = new int[10];
cout cout delete[] p1;
return 0;
}
编译、运行:
g++ -o new new.cpp -g -Wall
lanfeiy@yelanfei ~/workspace/test
$ ./new.exe
p: 0x800000400
p1: 0x8000128d0
总结
new
操作符会根据后面的数据类型来推断所需空间的大小。
用 new[]
分配的内存需要用 delete[]
释放,它们是一一对应的。
和 malloc()
一样,new
也是在堆区分配内存,必须手动释放,否则只能等到程序运行结束由操作系统回收。为了避免内存泄露,通常 new
和 delete
、new[]
和 delete[]
操作符应该成对出现,并且不要和C语言中 malloc()
、free()
一起混用。
在C++中,建议使用 new
和 delete
来管理内存,它们可以使用C++的一些新特性,最明显的是可以自动调用构造函数和析构函数。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net