动态分配内存是与静态分配内存相对的。当处理一个简单问题时,也许400字节的内存就够用了。那么这时静态动态分配都可以。那么当需要几百MB、甚至GB时,很显然静态分配这么大的内存,其开销太大了。如果不能全部利用其空间,就会造成内存的浪费,闲置不用。所以动态的分配内存,根据需要来分配大小。当一次性不能申请足够的内存时,可以分段的申请,进行处理,然后再申请,再处理,。。。最后再汇总。这给程序员很大的灵活性,有了灵活性就与管理它产生了矛盾。对于习惯了有gc垃圾回收功能语言的程序员来说,自己管理内存就是噩梦。
C++中使用new与delete配套。而取代了C语言的malloc与free函数。千万不要混合使用它们。先new再free或先malloc或delete。
动态申请一片内存:
new 类型 [初值]
int *tpMem = new int[10]; //申请一个数组
数组要用delete []tpMem; 来删除。
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int *tpMem = new int(200); //申请
*tpMem = 500; //赋值
cout<<*tpMem<<endl; //输出
//清理内存
if(tpMem){
delete tpMem;
tpMem = NULL;
}
printf("\n");
return 0;
}
刚开始接触语言,最好先养成良好的习惯。否则,一旦深入将付出更大的代价。