使用new分配内存:在运行阶段分配未命名的内存以存储值。这个内存实际是堆内存。
- int *ptr_int = new int; // new和delete是成对出现的。
delete ptr_int; // delete是指释放内存。
使用new给数组分配动态内存。
- int *ptr_array = new int[10];
- delete[ ] ptr_array; // 使用delete[ ]释放数组内存。
程序的内存分配;
栈区(stack):
由编译器自动分配释放,一般存放函数的参数,程序的局部变量等,操作方式类似栈的先进后出。
堆区 (heap):
由程序员自己分配释放,若程序不释放,程序结束时可能由系统回收。如果没被回收就成了野内存(没有任何指针指引,也叫内存泄漏。容易造成程序崩溃。)与数据结构中的堆两码事,分配方式类似链表。
全局区:
全局变量和静态变量存储在一起,结束后由系统释放。
文字常量区:
常量字符串存在这儿,程序结束由系统释放。
二维数组的指针:
int (* ptr)[3] = array ; // 降维表示