首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于delete的疑惑解决思路

2012-02-05 
关于delete的疑惑最近在看malloc和delete的问题一直有个不明白的地方比如说int* data(){char *a(int*)mal

关于delete的疑惑
最近在看malloc和delete的问题一直有个不明白的地方比如说

int* data()
{
  char *a=(int*)malloc(100*sizeof(char));
 //....然后给char填充数据
 return a;

}
int main()
{
  char *Data=data();
  //???问题就是什么时候去delete在data中的malloc呢?可以通过delete Data来释放在函数data()中申请的内存吗?
}
一直对于内存的申请和堆栈总是不太清楚地,还请指教哈

[解决办法]
我就不复制粘贴了
你看看这篇文章吧
讲的很详细
http://wenku.baidu.com/view/2a2a434de518964bcf847ccd.html
[解决办法]
我们不要企图用malloc/free 来完成动态对象的内存管理,应该用new/delete。
由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free 和new/delete
是等价的。
既然new/delete 的功能完全覆盖了malloc/free,为什么C++不把malloc/free 淘
汰出局呢?这是因为C++程序经常要调用C 函数,而C 程序只能用malloc/free 管理动
态内存。
如果用free 释放“new 创建的动态对象”,那么该对象因无法执行析构函数而可能
导致程序出错。如果用delete 释放“malloc 申请的动态内存”,理论上讲程序不会出错,
但是该程序的可读性很差。所以new/delete 必须配对使用,malloc/free 也一样。

引用高质量C++ 编程指南

热点排行