delete 怎么用?? 真郁悶!! char *aa;void ddd(){ aa=new char[nLen]; delete[] aa;}這個函數會多次調用,有問題嗎?這樣寫有錯嗎?為什么有時候會出錯? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 char *pCh;int nSize=100;pCh=new char[nSize];delete[] pCh; 如果nLen经过初始化,这些代码没有问题,多次调用也不会有内存泄漏之类的错误。 这样的ddd()函数,因为要多次调用,不要将aa放到堆里 我想知道 delete[] 可以知道該刪除多少個字節嗎?? delete[]可以删除任意多的字节。但是他必须是一段连续的内存!你想知道删除的大小的话,可以这样的了;const int nLen=100;int *p=new int[nLen];....................cout<<"all in mem<<sizeof(*p)<<endl;delete []p; 只要你是动态分配的delete[]自然知道该删除多少字节,这你不用担心,你只要保证你的指针安全就可以了 如果DELETE后的[]中没有参数,它会释放aa指针所指的全部内存,不管aa 所指的内存是否连续.因为是否连续取决于系统中数据的存储方式和目前可用的连续内存的大小和你要取得的内存大小. 哦?那如果是這樣呢char *aaa=new char[100];char *bbb=aaa;delete[] bbb;這時會刪掉多少? delete本身没有错,错误在别的地方,可能是中间使用aa过程中越界,或者是不小心删除了几次,或者不小心改变了aa的取值,比如aa++等等;甚至可能是其他部分得代码出错,破坏heap之后导致delete出错。 改成这样:char *aa;void ddd(){ aa=new char[nLen]; delete[] aa; aa=NULL;}以后用aa时判断是否为NULL再使用,要不aa成了野指针!当然会时不时出问题了。delete只是释放aa指向的内容,不删除aa本身!!切记! watch一下。看看new的时候aa的值,确保delete的时候aa的值没有变。 qing_li73(bluemoon) ( )说的很有道理 SHBrowseForFolder如何增加Path Text组件 按钮SetState的问题 HQ Video Keyer 求助:SendMessage用法 用代码实现选中Check Box ???? ADO往SQLSERVER插入BLOB字段,超过60M就异常,求救!!!! 引入CString出现下列问题,请高手指教! 请问:VC++环境夏对话框的移植? 关于系统的PHONEBOOK 为什么写了一个atl dll,用vb调用可以正常使用,而在Web中调用失败 如何模拟向其他窗口中进行键盘和鼠标操作 求教!
pCh=new char[nSize];delete[] pCh;
但是他必须是一段连续的内存!
你想知道删除的大小的话,可以这样的了;
const int nLen=100;
int *p=new int[nLen];
....................
cout<<"all in mem<<sizeof(*p)<<endl;
delete []p;
那如果是這樣呢char *aaa=new char[100];char *bbb=aaa;delete[] bbb;這時會刪掉多少?
{
aa=new char[nLen]; delete[] aa;
aa=NULL;
}以后用aa时判断是否为NULL再使用,要不aa成了野指针!当然会时不时出问题了。delete只是释放aa指向的内容,不删除aa本身!!切记!