首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

动态创建的字符串数组,怎样释放内存?解决方法

2012-02-21 
动态创建的字符串数组,怎样释放内存?? char**Buffernewchar*[1000]用deleteBuffer或delete[]Buffer好

动态创建的字符串数组,怎样释放内存??

char   **Buffer=new   char*[1000];


用   delete   Buffer;   或   delete   []Buffer;   好像释放不了


[解决办法]
delete []Buffer是对的,你的误区在于,你认为释放以后,
Buffer的值应当对应于一种“释放了的”状态

但世纪上,作为一个指针,它的表现方式只是一个整数(或类似的东西),
这个整数标明了变量或者数组在内存中的地址(物理地址或者虚拟地址),
在这个指向的地址的内容被释放以后,这片内存已经不能再去访问了,除非
另外一个指针指向了它。

但你的指针变量不是这样的,它还是保留这一个整数,对应于某个地址,
但你不用担心,指向的那块内存已经被正确释放了

好的风格是,在你delete []buf;以后,你写上buf=0,这样可以避免一些
不必要的混淆
[解决办法]
你的delete只是把内存从你的程序还给系统堆管理函数。
任务监视器监视的是系统堆管理函数从os申请的内存。
这是2码事呀。

[解决办法]
建议读一下林锐的那篇文章
[解决办法]
char **Buffer=new char*[100];
for (int i = 0; i < 100; i++) {
delete Buffer[i];
}

delete Buffer;

热点排行