📄 subject_52941.htm
字号:
<p>
序号:52941 发表者:鹏程 发表日期:2003-09-16 02:06:06
<br>主题:为什么有delete p;句运行时就出警告框?
<br>内容:为什么有delete p;句运行时就出警告框?<BR><BR>代码如下:<BR>#include<iostream.h><BR><BR>void main()<BR>{<BR> int a=10;<BR> int *p=new int;<BR> p=&a;<BR> cout<<p<<endl;<BR> delete p; //有此句运行时就出警告框!!!<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:哈哈黑 回复日期:2003-09-16 03:39:59
<br>内容:我不知道怎么说清,<BR>不过,p=&a,改变了指向堆区的指针,在堆区申请的空间已无法释放。<BR>delete p;释放的不是堆区的空间。<BR>总之这种用法是错的。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:little_friend 回复日期:2003-09-16 08:28:37
<br>内容:请问如果想要释放P应该怎么办<BR>能否用free(p)代替delete p;;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:coolleo 回复日期:2003-09-16 08:44:13
<br>内容:不错,是野指针<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:iamhere 回复日期:2003-09-16 09:35:02
<br>内容:delete只能释放由new申请的内存,<BR>前面int *p=new int;<BR> p=&a;<BR>此时p指向的已不是new申请的内存,所以执行delete时会警告。<BR><BR>从这段程序看没有必要去new一块内存,直接int *p = &a;就可以了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:鹏程 回复日期:2003-09-16 11:31:12
<br>内容:谢谢朋友们的帮助,我明白了。上面我只是做练习,因为我光看书了,还没有实践上机。<BR>另外,我非常感谢4楼,4楼讲的非常详细。但1楼讲的我也明白了,并且1楼在先。<BR><BR>改成下面的代码就不出警告框了:<BR>#include<iostream.h><BR><BR>void main()<BR>{<BR> int a=10;<BR> int *p=new int,*q;<BR> q=p;<BR> p=&a;<BR> cout<<p<<"-----------"<<q<<endl;<BR> p=q;<BR> delete p; //有此句运行时就出警告框!!!<BR>} <BR><BR><BR><BR><BR>2003-9-16 11:37:53
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -