delete 怎么用?? 真郁悶!!

rokia 2002-10-20 03:45:18
char *aa;

void ddd()
{
aa=new char[nLen];

delete[] aa;
}
這個函數會多次調用,有問題嗎?

這樣寫有錯嗎?

為什么有時候會出錯?
...全文
136 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jian 2002-10-20
  • 打赏
  • 举报
回复
qing_li73(bluemoon) ( )说的很有道理
qrlvls 2002-10-20
  • 打赏
  • 举报
回复
函数本身并没有错,关键是在使用的时候注意一下了
rokia 2002-10-20
  • 打赏
  • 举报
回复
多謝各位
Hanzo 2002-10-20
  • 打赏
  • 举报
回复
watch一下。看看new的时候aa的值,确保delete的时候aa的值没有变。
qing_li73 2002-10-20
  • 打赏
  • 举报
回复
改成这样:

char *aa;

void ddd()
{
aa=new char[nLen];

delete[] aa;
aa=NULL;
}

以后用aa时判断是否为NULL再使用,要不aa成了野指针!当然会时不时出问题了。delete只是释放aa指向的内容,不删除aa本身!!切记!
rokia 2002-10-20
  • 打赏
  • 举报
回复
哦,有道理。
回去看看。
stonespace 2002-10-20
  • 打赏
  • 举报
回复
delete本身没有错,错误在别的地方,可能是中间使用aa过程中越界,或者是不小心删除了几次,或者不小心改变了aa的取值,比如aa++等等;甚至可能是其他部分得代码出错,破坏heap之后导致delete出错。
rokia 2002-10-20
  • 打赏
  • 举报
回复
現在的問題是有時候會出錯,有時候不會。

真是郁悶!
FloatSea 2002-10-20
  • 打赏
  • 举报
回复
应该是一样的
rokia 2002-10-20
  • 打赏
  • 举报
回复
哦?
那如果是這樣呢

char *aaa=new char[100];

char *bbb=aaa;

delete[] bbb;

這時會刪掉多少?
qijianhui0 2002-10-20
  • 打赏
  • 举报
回复
如果DELETE后的[]中没有参数,它会释放aa指针所指的全部内存,不管aa 所指的内存是否连续.因为是否连续取决于系统中数据的存储方式和目前可用的连续内存的大小和你要取得的内存大小.
Alain_Delone 2002-10-20
  • 打赏
  • 举报
回复
只要你是动态分配的delete[]自然知道该删除多少字节,这你不用担心,你只要保证你的指针安全就可以了
seaymx 2002-10-20
  • 打赏
  • 举报
回复
delete[]可以删除任意多的字节。
但是他必须是一段连续的内存!
你想知道删除的大小的话,可以这样的了;
const int nLen=100;
int *p=new int[nLen];
....................
cout<<"all in mem<<sizeof(*p)<<endl;
delete []p;
rokia 2002-10-20
  • 打赏
  • 举报
回复
我想知道 delete[] 可以知道該刪除多少個字節嗎??
approach 2002-10-20
  • 打赏
  • 举报
回复
这样的ddd()函数,因为要多次调用,不要将aa放到堆里
memset 2002-10-20
  • 打赏
  • 举报
回复
最好在delete后再置NULL
stonespace 2002-10-20
  • 打赏
  • 举报
回复
如果nLen经过初始化,这些代码没有问题,多次调用也不会有内存泄漏之类的错误。
c_vector 2002-10-20
  • 打赏
  • 举报
回复
aa,你能保证以后不用到吗
mlin2000 2002-10-20
  • 打赏
  • 举报
回复
char *pCh;

int nSize=100;
pCh=new char[nSize];

delete[] pCh;

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧