参考:
C++——动态内存分配new–delete
c++ primer plus
一、静态内存分配与动态内存分配
静态内存分配:全局或局部变量(对象),编译器在编译时都可以根据变量或对象的类型知道所需内存空间的大小。从而系统在适当的时候为他们分配内存空间
动态内存分配:有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配称为动态内存分配。动态分配都在自由存储区中进行。
动态内存分配 :
在c++中可以使用malloc()动态分配内存,但更好的方法是使用new来分配内存
指针真正的用武之地:在运行阶段分配未命名的内存以存值,在此情况下只能通过指针来访问内存
//在运行阶段为一个int值分配未命名内存
//使用指针来访问这个值
int* ps = new int;
//左边的变量指向了新的内存空间
//使用delete释放内存
delete ps;
delete使用注意:
与new配对使用
不释放已经释放的内存
不能释放普通变量分配的内存
对空指针使用delete是安全的
数组动态分配:
使用new创建数组
int* array = new int[10];
//new运算符返回第一个数组元素的地址
使用delete释放数组空间
delete[] array;