请教一下delete释放内存

iseealv 2007-08-04 10:54:29
RSBlocks=new int*[numRSBlocks];//numRSBlocks=2
for(i=0;i<numRSBlocks;i++)
RSBlocks[i]=new int[numRSBlocks];
//RSBlocks[i]赋给了2个没开辟内存的指针p1和p2,但是没有释放内存的行为
for(i=0;i<numRSBlocks;i++)
delete RSBlocks[i];//(*)
delete RSBlocks;(**)
但是释放的时候运行到(*)时提示:user breakpoint called from code at
0x7c921230
然后就进入汇编状态下运行,运行两个循环就出现"debug assertion failed!"
我查了一下释放前后各个指针的地址,并没有发生变化,为什么会释放不了呢?
而且我也没有设置断点,怎么会提示user breakpoint
而当出现"debug assertion failed!"的时候正好时运行(**)的时候。
...全文
292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iseealv 2007-08-04
  • 打赏
  • 举报
回复
单独执行,我的也是没问题的
iseealv 2007-08-04
  • 打赏
  • 举报
回复
不行的,我试过了,不知道是不是其他引起的,这样单独估计是没问题的
yydrewdrew 2007-08-04
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
#define numRSBlocks 2
int main()
{
int **RSBlocks=new int*[numRSBlocks];//numRSBlocks=2
for(int i=0;i<numRSBlocks;i++)
RSBlocks[i]=new int[numRSBlocks];
for(i=0;i<numRSBlocks;i++)
delete []RSBlocks[i];//(*)
delete []RSBlocks;
return 0;
}
星羽 2007-08-04
  • 打赏
  • 举报
回复
这样

RSBlocks=new int*[numRSBlocks];
for(i=0;i<numRSBlocks;i++)
RSBlocks[i]=new int[numRSBlocks];

for(i=0;i<numRSBlocks;i++)
delete[] RSBlocks[i];
delete[] RSBlocks;

看看
yydrewdrew 2007-08-04
  • 打赏
  • 举报
回复
哦,delete RSBlocks还要改为delete []RSBlocks;
yydrewdrew 2007-08-04
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
#define numRSBlocks 2
int main()
{
int **RSBlocks=new int*[numRSBlocks];//numRSBlocks=2
for(int i=0;i<numRSBlocks;i++)
RSBlocks[i]=new int[numRSBlocks];
for(i=0;i<numRSBlocks;i++)
delete RSBlocks[i];//(*)
delete RSBlocks;
return 0;
}
运行无问题
skyscribe 2007-08-04
  • 打赏
  • 举报
回复
Chiyer(星羽)的方法肯定没问题的!

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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