c++学习笔记(四)
动态内存分配
使用new分配内存
1.指针的用处是在运行阶段分配未命名的内存以储存值。
2.在此情况下,只能通过指针来访问内存。
int *ptr_int=new int;//在内存阶段为一个int值分配未命名的内存,使用指针来访问这个值。
但不能忘记用delete来释放。(与new配对使用)
delete ptr_int;//释放由new分配的内存
栈区和堆区
1.栈区(stack)
由编译器自动分配释放,一般存放函数的参数值、局部变量的值等。
操作方式先进后出。
2.堆区(heap)
一般由程序员分配释放,若程序不释放,程序结束时可能由操作系统回收。
分配方式类似链表。
3.全局区(静态区static)
全局变量和静态变量存储在一起。
程序结束后由系统释放。
4.文字常量区
常量字符串就放在这里,程序结束后由系统释放。
5.程序代码区
存放函数体的二进制代码。
ptr_int 是在栈区,new int是在堆区分配了一块int型空间,左边指向右边。
int num[5];//在编译时分配空间
int *nums=new int[5];//在运行时分配空间,即运行到这一行时才分配空间。