C++程序内存分布

程序中变量的内存分配方式

  程序运行时需要占用多大的空间需要在编译时确定,便于操作系统为程序分配适当的内存空间。

  从静态存储区分配:程序的全局变量和静态变量都在这里分配,且在编译时已经分配好,在程序终止前被操作系统回收。

  在栈上创建:在函数调用时,函数的形参和局部变量都在栈上创建,函数执行完毕时这些内存自动被释放掉。

  从堆(heap)上分配:在程序运行期间,用动态存储分配函数申请和释放的内存

动态存储分配

  由动态内存管理系统管理的这块内存区域叫做“堆(heap)”:

  当需要动态灵活地分配内存空间时,需要用到动态存储分配 动态分配得到的内存块位于堆中,

  且没有名字 动态存储分配由库函数malloc.h提供 格式:

  p = (double* ) malloc(n*sizeof(double)) C++中动态存储分配由运算符new和delete实现 new和delete完成动态存储分配时,

  可以很好地和构造函数、析构函数进行交互,malloc和free不能自行调用构造函数和析构函数

具体方法: 指针变量名 = new 类型;

  指针变量名 = new 类型 (初值);

  指针变量名 = new 类型 [元素个数];

  当执行new时,有两件事发生: 大小适当的空间被分配给特定类型的变量;

  该存储空间首地址作为new表达式的返回值,若分配失败则返回0 ;

  基本类型一般不采用动态存储分配

原文地址:https://www.cnblogs.com/Star9527/p/3392960.html