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

📄 subject_26830.htm

📁 vc
💻 HTM
字号:
<p>
序号:26830 发表者:金枪鱼 发表日期:2003-01-05 23:01:19
<br>主题:关于delete的问题
<br>内容:char *lpBuffer=new char[nBufferSize<BR>..........<BR>delete [] lpBuffer;<BR>..........<BR>我在MSDN上没有查到delete的这种写法,请高手指点这里的[]是什么意思?
<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-01-06 00:31:21
<br>内容:释放一块内存,与new []成对使用<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-06 00:44:10
<br>内容:我使用char *lpBuffer=new char[nBufferSize];<BR>是否为new []呢?
<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-06 08:55:20
<br>内容:没错。这个要特别小心。<BR>delete lpBuffer;<BR>编译也没错,但只Delete了数组的第一个元素。<BR>不管你的数组有多大,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-06 09:35:39
<br>内容:对不起,我刚发完贴子才发现原来这里有一个和我的问题很相似的问题,我就再发一次便于讨论,下不为例好吗?与delete有关<BR>我在学用字符串的声明时遇到这样一个例子:<BR>#include "stdafx.h"<BR>#include &lt;iostream.h&gt;<BR><BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;char *string = new char[5];<BR>&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;string;//<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;string&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;delete[] string;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR><BR>运行很好,但是当我修改一下,把字符串直接赋值(string="dada")<BR>结果编译通过执行却报错。请高手帮忙解释一下是怎么回事呢?用cin给字符串赋值和直接赋值为什么会不同呢?<BR>#include "stdafx.h"<BR>#include &lt;iostream.h&gt;<BR><BR>int main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;char *string = new char[5];<BR>&nbsp;&nbsp;&nbsp;&nbsp;string = "dada";<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;string&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;delete[] string;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//return 0;<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-06 12:04:22
<br>内容:谢谢!<BR>感谢凯凯的解释,让我明白了。<BR><BR>至于沐秋提出的问题,我觉得string是不是不能直接赋值"dada"。是否应该现构成一个char 数组,然后将其指针赋值给string。<BR><BR>比如:<BR>char *string=new char[5];<BR>char kk[5];<BR>strcpry(kk,"dada");<BR>string= kk;<BR>.....<BR>delete [] string<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>
回复者:tjhe 回复日期:2003-01-07 14:42:53
<br>内容:char *string=new char[5];<BR>char kk[5];<BR>strcpry(kk,"dada");<BR>string= kk;<BR>.....<BR>delete [] string&nbsp;&nbsp;&nbsp;&nbsp;//不行,此时string已指向数组kk(栈空间中),原来的<BR>char *string=new char[5];&nbsp;&nbsp;没释放
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:rancle 回复日期:2003-02-20 14:27:41
<br>内容:delete 只能用于删除在堆中申请的内存空间<BR>当使用char kk[5]时,实际上是在堆栈中申请的内存,<BR>执行string=kk后,此时的string 已经变为指向椎栈中的内存,不能用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>
回复者:小兵乙 回复日期:2004-01-14 17:17:53
<br>内容:沐秋提出的问题我测了一下,只要将“delete [] string”改成“delete string”应该就能跑了。原因我想就像各位所说的那样,此时string指向的是字符串常量,应该不用加“[]”就可以删了吧!请各位指点!
<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 + -