`
dyx1024
  • 浏览: 115180 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

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次;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics