C++学习笔记一

C中的内存分配方式:

1.静态存储区域:在程序开始之前就可以分配,且在程序运行过程中始终存在; 2.栈;存储单元在其上分配,单元外自动释放,多见内置 数据类型于此;

3.堆:动态分配,即程序运行时分配此部分内存.由用户分配且要负责释放.生存期由用户决定,不受范围限制; 

stdlib.h提供malloc(),及其变种:calloc(),realloc(),free();  

用法:Obj *obj = (Obj*)malloc(sizeof(Obj)); 

用户必须指定对角的长度,因为它是一块内存而不是一个对象,malloc()返回一个void*,

在C++中,不允许把一个void*赋予任何指针;

malloc()可能分配不到内存,此时返回0, 所以必须检杳返回指针以确定内存分配成功.

C++中内存分配方式:  

new操作符在堆中为对象分配内存并调用构造函数,

a.有参数表的构造函数分配: Obj *fp = new Obj(1, 2);

b.没有参数表的构造函数分配:Obj *fp = new Obj;  

  分配成功与否由new内置检查;

   delete用于删除new创建的对象,其先调用析构函数再释放内存,成对使用;

 如果正在删除的对象指针是 0, 将不发生任何事情,在删除这后要立即把指针赋值为0以免删除2次;

你可能感兴趣的:(C++,c,delete,存储,FP)