zoukankan      html  css  js  c++  java
  • 内存管理

    1.C++程序的内存格局分四个区: 1.全局数据区/静态区/字符串常量:全局变量、进态数据、常量

                     2.代码区:所有类成员函数代码、非成员函数代码

                                                 3.栈区/堆栈:为运行函数而分配的局部变量、函数参数、返回数据、返回地址

                                                 4.堆区:malloc/free或new delete,从堆中分配和释放内存块

    2.使用堆空间的情况: 1.直到运行时才能知道需要多少对象空间

                                 2.不知道对象的生存期到底有多长

                                 3.直到运行时才知道一个对象需要多少内存空间

    3.new/delete是C++的运算符,它们都可用于申请动态内存和释放内存。 构造函数可以有参数。所以在new后面的类类型也可以有参数。 类名 *变量名 = new 类名(....);右边在堆中开辟空间存放的是类的对象,左边在栈中开辟空间存放的是变量,这个变量是一个地址,它指向的是堆空间的地址。 new数组:类名 *变量名 = new 类名[元素个数]; 从堆中分配对象数组时,只能调用无参的默认构造函数,没有默认的构造函数的类,不能分配对象数组。

    4.堆对象析构是在释放堆对象语句delete执行之时。 局部对象在该对象退出作用域时自动调用析构函数,但在堆对象中作用域是整个程序的生命周期,所以除非程序运行完毕,否则堆对象作用域不会到期。 delete 变量名;或delete[] 变量名; 变量名 = NULL;

    5.形参是引用时,实际上传的是地址,即指向的地址

       malloc只关心内存大小

      

  • 相关阅读:
    jquery在线手册
    bootstrap学习之路
    实用的cmd命令
    在源代码中插入防止盗版代码片段的方式
    常用的正则表达式
    仿站步骤
    thinkphp 公用函数
    php switch判断一个数所在的范围
    ps学习教程
    九度oj 题目1185:特殊排序
  • 原文地址:https://www.cnblogs.com/zgen1/p/6790448.html
Copyright © 2011-2022 走看看