• 堆中的变量、对象的使用


    堆~变量:

     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();

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

  • 相关阅读:
    SQL练习题
    数据库基础
    Java-反射与注解
    Linux基础
    pipeline的使用示例
    vagrant与vrtualbox的使用
    12.04公有,私有属性,析构函数,成员属性
    12.1面向对象编程的介绍(oop):封装,继承,多态,访问私有属性
    mysql操作之二:fetchone与获取lastrowid
    10.02经典类的bug
  • 原文地址:https://www.cnblogs.com/simonLiang/p/5901088.html
Copyright © 2020-2023  润新知