作者:jicanmeng
时间:2014年11月27日
在C语言中,动态分配内存使用malloc()函数,释放动态分配的内存用free()函数。在C++中,malloc/free被替换成了new/delete。
示例程序如下:
#include <iostream>
int main()
{
// dynamically allocate an integer
int *pnValue = new int;
*pnValue = 7;
// unallocate memory assigned to pnValue
delete pnValue;
pnValue = 0;
int nSize = 12;
int *pnArray = new int[nSize]; // note: nSize does not need to be constant!
pnArray[4] = 7;
delete[] pnArray;
return 0;
}
new和delete有两个版本:new/delete和new[]/delete[]。前者用于分配和释放一个变量的内存,后者用于分配和释放一个数组的内存。在程序中,我们虽然在分配数组内存的时候使用了new int[nSize],但其实编译器调用的是new[]。