lstd.net
当前位置:首页 >> 关于C++中DElEtE出错的问题 >>

关于C++中DElEtE出错的问题

using *p; &lt,上面的 p char[5];iostream&gt.com/zhidao/pic/item/09fa513d269759ee539690a3b2fb43166c22df90.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"> *p = *s=new delete char&nbsp.hiphotos.baidu.com/

指针与NULL值做判断,并不能发现指针悬垂问题(指针所指的对象已经删除后,没有让指针指向NULL),此时再做删除指针操作基本上都会爆出运行是问题. 看你这代码不能确定是不是这个错,但从这个出错位置和语句看,基本上是这个问题.

new分配的内存空间不会自动回收, 必须手动用delete来释放, 所以B是错误的, 记住new和delete是成对出现的, 还有就是malloc和free也是

delete [] 必须要知道数组的实际长度,而这个信息是在正确使用new时才会记录的,因此绝不可行.此外C++中使用强制转换也是极坏的编程习惯

把你所有的new int[x]改为new int就没错了.主要错误是:itsRadius=new int [0];

memcpy(pRet, &m_code, 4); memcpy(pRet + 5, &m_state, 4);// 使用了new 之外的内存,delete 出错.

p=&a; cout<<"p:"<<p<<endl; cout<<"*p:"<<*p<<endl; delete p;a是局部变量,不是2113new出来的.当然不5261能delete啦另外delete之后设为0是个4102好习惯.不过建议1653你用版null啊虽然都是一个意思.权 delete p; p=0;

p = new int之后p指向一块新分配出来的sizeof(int)个字节的内存地址然后你p = &n后,p变更指向为局部变量n的地址cout << p[0]输出p的指向也就是n的值问题在于free(p); p这个时候指向的不是动态分配出来的内存,而是局部变量n的地址,free函数作用于非动态分配出来的内存地址行为是未定义的,所以出错了另外加一句,new出来的内存就用delete删除了,new和delete,malloc和free不配对使用也会造成未定义错误行为的产生.

问题不在delete是你这里越界了marray[i][j]=0;应该是:marray[i-1][j-1]=0;

忽略你的编译错误,这么用是不会有问题的你应该是往Name里拷贝了过多的东西

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.lstd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com