⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_27061.htm

📁 vc
💻 HTM
字号:
<p>
序号:27061 发表者:tigersky2000 发表日期:2003-01-08 10:42:01
<br>主题:有个关于重载new与delete的问题搞不明白
<br>内容:如下程序:<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;stdio.h&gt;<BR><BR>void* operator new (size_t mesize)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("operator new is here\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;void* p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;p=malloc(mesize);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!p) puts("out of memory\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;return p;<BR>}<BR><BR>void operator delete (void* m)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("operator delete is here\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("the free address is:%x\n",m);<BR>&nbsp;&nbsp;&nbsp;&nbsp;free(m);<BR>}<BR><BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("create and destroy a int in here\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;int*i =new int(47);<BR>&nbsp;&nbsp;&nbsp;&nbsp;delete i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf("end\n");<BR>}<BR><BR><BR>运行结果为:<BR>create and destroy a int in here<BR>operator new is here<BR>operator delete is here<BR>the free address is:431e30<BR>end<BR>operator delete is here&nbsp;&nbsp; //在出了main后,他释放的位于431e60的是什么? 如果有delete,应该在前面有对应的new呀<BR>the free address is:431e60<BR><BR><BR>怎么会出现两次调用delete的现象呢? 而且不是重复删除! 第二次在出main函数后在地址431e60处删除的是什么东西呢? 如果是系统分配的内存,则应该在进入main之前调用new呀!<BR><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>回复者:tjhe 回复日期:2003-01-08 11:24:12
<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>
回复者:晚风也渡 回复日期:2003-01-08 11:41:54
<br>内容:tigersky2000,我也没有那最后两句!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tigersky2000 回复日期:2003-01-08 12:35:59
<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>
回复者:tigersky2000 回复日期:2003-01-08 12:42:00
<br>内容:我看了一下,可能是我另外两个类引起的!因为我重载了全局new和delete 但是也不对呀!new和delete应该一一对应呀! <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>
回复者:tigersky2000 回复日期:2003-01-08 12:47:10
<br>内容:我有一个文件里包含了iostream.h<BR><BR>这个类里面使用了new和delete,但是,有一点我还是想不通! 为什么new和delete不一一对应! 谢谢
<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-01-08 13:02:50
<br>内容:只要用new动态分配的内存,必须用delete删除,否则会引起内存泄漏
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:tigersky2000 回复日期:2003-01-09 18:37:13
<br>内容:大家帮着看看呀! 谢谢了!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -