当需要内存时,可以使用new来请求,使用完内存后,可以使用delete将其归还给内存池。
归还或释放(free)的内存可供程序的其他部分使用。
使用delete时,后面要加上指向内存块的指针(这些内存块最初是用new分配的)。
cpp
int * ps = new int; //allocate memory with new
... //use the memory
delete ps;//free memory with delete when done
这将释放ps指向的内存,但不会删除指针ps本身。
一定要配对使用new和delete;否则将发生内存泄漏(memory leak),即被分配的内存再也无法使用了。如果内存泄漏严重,则程序将由于不断寻找更多内存而终止。
不要尝试释放已经释放的内存块,C++标准指出,这样做的结果将是不确定的。
不能使用delete来释放声明变量所获得的内存,只能用delete来释放使用new分配的内存。
对空指针使用delete是安全的。
cpp
int * ps = new int; //ok
delete ps; //ok
delete ps; //not ok now
int jugs = 5; //ok
int *pi = &jugs; //ok
delete pi; //not allowed,memory allocated by new