程序运行时,计算机的内存被分为四个区,程序代码区,全局数据区,堆,栈。
在c语言中使用malloc()和free()来进行动态内存管理,而在c++中对应使用new和delete:
下例中展示了其用法:
1、动态分配内存空间,并指定空间大小。
2、在分配内存空间的同时初始化。(这里的初始化是指初始化其指向的内存中的值)
#include <iostream>
using namespace std;
int main()
{
int* p;
p = new int;
//动态分配内存空间,在其后加上空间大小即可。
int* a = new int[10];
//在分配内存空间的时候对其进行初始化。
int* d = new int(99);
cout << "d = " << *d << endl;
//释放内存空间,注意在用完后一定要用delete释放,不然会变成死空间
delete p, a, d;
system("pause");
return 0;
}
new和delete的补充说明:
1、在使用结束后只能用delete显式地释放,否则这部分空间将不能回收而变成死空间。
2、如果没有足够的内存,却使用运算符new动态分配内存时,new将返回空指针(NULL)。