posts - 24, comments - 11, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

请问什么叫"释放内存"?

Posted on 2006-02-23 15:55 quite 阅读(1081) 评论(1)  编辑 收藏 引用 所属分类: 求助

//请问什么叫“释放内存”?

#include<iostream>
int main()
{
 using namespace std;
 int *ps=new int;
 int *pq=ps;
 *ps=4;
 cout<<*ps<<endl<<endl<<*pq<<endl<<endl;//输出两个  4

 delete pq;
 //delete ps;  加上这条语句后,下条语句不会输出,另外,系统报错。

 cout<<*ps<<endl<<endl;//-527665236  ???不明白到底什么叫释放内存。另外,“一般来说,不要
 //创建两个指向同一个内存块的指针,因为这样将增加错误地删除同一个内存块两次的可能性”
 //为什么同一个内存块不能删除两次?理论上是没有必要,但真正这样做了,会有什么后果??

 return 0;
}

Feedback

# re: 请问什么叫"释放内存"?  回复  更多评论   

2006-03-25 17:53 by 到此一游
//为什么同一个内存块不能删除两次?理论上是没有必要,但真正这样做了,会有什么后果??
----------
将导致一个指针为NULL
当然不能删除两次,编程本来就不建议对不存在的地址进行操作
C++ 没有自动回收机制 所以必须手动删除
建议看看C++ 编程艺术 对垃圾回收讲得非常详细

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理