C++学习笔记(动态内存)

C++学习笔记(动态内存)

很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。

double* pvalue  = NULL; // 初始化为 null 的指针
pvalue  = new double;   // 为变量请求内存
delete pvalue;        // 释放 pvalue 所指向的内存

如果自由存储区已被用完,可能无法成功分配内存。所以建议检查 new 运算符是否返回 NULL 指针,并采取以下适当的操作:(巨坑啊 让我联想到Java中NullPoint)

double* pvalue  = NULL;
if( !(pvalue  = new double ))
{
    cout << "Error: out of memory." <<endl;
    exit(1);
}   

数组的动态内存分配:

char* pvalue  = NULL;   // 初始化为 null 的指针
pvalue  = new char[20]; // 为变量请求内存
delete [] pvalue;        // 删除 pvalue 所指向的数组

对象的动态内存分配:

#include <iostream>
using namespace std;
 
class Box
{
   public:
      Box() { 
         cout << "调用构造函数!" <<endl; 
      }
      ~Box() { 
         cout << "调用析构函数!" <<endl; //析构函数
      }
};
 
int main( )
{
   Box* myBoxArray = new Box[4];//这种写法看的蛋疼啊 创建4个Box对象
 
   delete [] myBoxArray; // Delete array 也会调用4次析构函数
 
   return 0;
}

learn and copy from:

http://www.runoob.com/cplusplus/cpp-dynamic-memory.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 5,024评论 0 13
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,002评论 0 7
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,410评论 0 35
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,753评论 0 4
  • 你看那水波荡漾,映衬出岸边的一切,平静又微动,就像人生,不平坦却也清澈见底,要让你的心如水,不论到什么样的年纪,不...
    奈特酱阅读 397评论 0 1