C++程序内存分布
程序中变量的内存分配方式
程序运行时需要占用多大的空间需要在编译时确定,便于操作系统为程序分配适当的内存空间。
从静态存储区分配:程序的全局变量和静态变量都在这里分配,且在编译时已经分配好,在程序终止前被操作系统回收。
在栈上创建:在函数调用时,函数的形参和局部变量都在栈上创建,函数执行完毕时这些内存自动被释放掉。
从堆(heap)上分配:在程序运行期间,用动态存储分配函数申请和释放的内存
动态存储分配
由动态内存管理系统管理的这块内存区域叫做“堆(heap)”:
当需要动态灵活地分配内存空间时,需要用到动态存储分配 动态分配得到的内存块位于堆中,
且没有名字 动态存储分配由库函数malloc.h提供 格式:
p = (double* ) malloc(n*sizeof(double)) C++中动态存储分配由运算符new和delete实现 new和delete完成动态存储分配时,
可以很好地和构造函数、析构函数进行交互,malloc和free不能自行调用构造函数和析构函数
具体方法: 指针变量名 = new 类型;
指针变量名 = new 类型 (初值);
指针变量名 = new 类型 [元素个数];
当执行new时,有两件事发生: 大小适当的空间被分配给特定类型的变量;
该存储空间首地址作为new表达式的返回值,若分配失败则返回0 ;
基本类型一般不采用动态存储分配