📄 subject_53847.htm
字号:
<p>
序号:53847 发表者:金源 发表日期:2003-09-23 17:01:39
<br>主题:关于new,delete的问题
<br>内容:我有这样一个问题:<BR><BR>unsigned char *lpstr = new unsigned char [100];<BR>delete [] lpstr;<BR><BR>这样可以释放内存,但是<BR><BR>struct A<BR>{<BR>.....<BR><BR>};<BR><BR>A *pA =(A*) lpstr;<BR>delete [] pA;<BR><BR>会释放掉“new unsigned char [100];”申请内存吗?<BR>如果不会,它释放掉了那一块?<BR>如果会,它又是怎样知道应该释放多大?<BR><BR>还有,<BR><BR>unsigned char *lpstr2 = lpstr + 10;<BR>delete [] lpstr;<BR><BR>释放的又是那一块呢?<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>
回复者:飞翔的瞳眸 回复日期:2003-09-23 18:21: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>
<font color=red>答案被接受</font><br>回复者:很土 回复日期:2003-09-23 19:33:31
<br>内容:在正式的编程里面,你的这些写法都是通不过代码检查的. 项目的负责人也不会让这样的代码存在里面<BR>编程编程是有一定的规则的.而这个规则代表着某种经验的总结.<BR>如果你想写些代码来测试编译器的极限,或者表示你可以以一种非常规的方法来写程序的话,那么你的目的是达到了. <BR>new 和delete的规则很简单,就是怎么new 就怎么delete. 不要new A,delete B.<BR>也不要new A[], delete A. 仅仅是这样的,至于其他的方法可以做为不良代码的例子来实现.但是正式编程的时候则不应该这样做.<BR>仅此而已.<BR><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 + -