C++动态分配内存【转】

静态与动态内存分配的两个主要区别是:
  1、静态对象是有名字的变量,我们直接对其进行操作。而动态对象是没有名字的变量,我们通过指针间接地对它进行操作。
  2、静态对象的分配与释放由编译器自动处理。程序员需要理解这一点,但不需要做任何事情。相反,动态对象的分配与释放,
        必须由程序员显示地管理,相对来说比较   容易出错,它通过new和delete两个表达式来完成。
对象的动态分派可通过new表达式的两个版本之一来完成。第一个版本用于分配特定类型的单个对象
  例如: int *pint = new int(1024);
  表达式返回对象在内存中的地址。接着,这个地址被用来初始化指针对象pint。
  new表达式的第二个版本,用于分配特定类型和位数的数组。
  例如:int *pia=new int[4];
  分配了一个含有四个整数元素的数组。不幸的是,我们没有办法给动态分配的数组的每个元素显式地指定一个初始值。
  当用完了动态分配地对象或对象地数组时,我们必须显式地释放这些内存。我们可以通过使用delete表达式地两个版本之一来完成这件事情,
  例如:删除单一对象
  delete pint;
  数组形式地delete表达式为:
  delete [] pia;
  如果忘记删除动态分配地内存,程序就会在结束时出现内存泄漏(memory leak)的问题。
 
转自:http://programmingart.blog.51cto.com/213782/43497
posted on 2011-10-30 16:21  COS  阅读(188)  评论(0编辑  收藏  举报