堆中的变量、对象的使用

堆~变量:

 C++中创建动态指针:

int *p;    //定义整型指针变量p

p = new int;  //new创建一个int类型的内存区域,然后将该区域的内存地址赋给指针变量p,p占用4个字节(int型嘛)

或者  int *p = new int;

释放:delete p;    //将动态内存释放,但是p指针变量还在,并且还指向原来的位置,在又重新创建同一类型的(不同类型的也有可能)堆空间时,p默认还会指向新建的堆,这样会造成两个指针同时指向同一段地址,所以需将p指向空指针(空指针的不当使用可能会造成系统崩溃,也是一种防止调试错误的方法)。但不能删除一个没有指向任何地址的指针,可以删除空指针

p=0;    //记得要跟随在  delete p; 之后!!

 

C中创建堆:

void *malloc(size_t size);    // 参数:size_字节数       返回值:成功返回分配空间的首地址,失败返回 NULL

释放:void free(void *ptr);    //功能:释放由 malloc、calloc、realloc 分配的空间参数, ptr_:空间的首地址 ,无返回值

 

若没有删除动态指针就重新赋值,或者没有使用完之后没有释放,就会造成内存泄漏。

 

堆~对象

在堆中创建一个对象:Human *p = new Human;    //Human 是对象

在堆中删除一个对象:delete p;

访问堆中的的数据成员: (*p).get();    //get()是Human中的一个方法

         或者  p->get();

 

存储在堆中的对象,需要程序员自行对其所占用内存释放后,系统才对内存回收(执行析构函数),否则得等到程序结束。

posted @ 2016-09-23 18:09  SimonLiang  阅读(662)  评论(0编辑  收藏  举报