请教高手,debug和release下new的区别。(高分)

apcad 2004-10-31 02:47:32
(1) int *p = new int[9];
(2) for(int k = 0; k < 9; k++) {
*(p+k) = 1; }
(3) int *p1 = &p[2];
(4) delete p1; //debug下不可以delete,在release可以 –〉为什么?
(5) p1 = NULL; //赋为空,可以么?
(6) int *p2 = &p[2]; //为什么在release下p2不是NULL?
(7)
我听说在debug和release下,程序申请内存的方式不一样,但不知为什么,还请帮忙:
在debug下面程序运行到4处,出错。
在release下面程序可以运行到6处,但是为什么此时p2为什么不是NULL?
...全文
71 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
apcad 2004-10-31
  • 打赏
  • 举报
回复
谢谢 pjincz(无定乾坤)的帮助,也非常感谢truewill的批评。
truewill 2004-10-31
  • 打赏
  • 举报
回复
看来楼主的概念极不清晰,建议先看看书
pjincz 2004-10-31
  • 打赏
  • 举报
回复
在debug中对栈有保护.
到了4处就提示程序出错.

对于第二个问题:
你只是把p1赋为空
p这个变量却没有变动.
所以p2不是NULL
apcad 2004-10-31
  • 打赏
  • 举报
回复
在4处,p1变成了“野”指针,再赋值应该不是给p[2]的吧?我的意思是想让p[2]为NULL是否可以?

65,187

社区成员

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

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