概要
在执行一个C/C++语言程序时,此程序将拥有唯一的“内存四区”——栈区、堆区、全局区、代码区。每个程序都有唯一的四个内存区域,我们需要熟悉内存四区的特性,学好内存四区是学好指针的关键。
下面我将详详细讨论一下内存四区
内存四区详解
内存四区
栈区:储存局部变量、函数形参、函数返回值,内存自动回收,不需要手动管理
堆区:储存通过程序员动态申请的内存:malloc、relloc、new,需要手动释放缓存:free、delete,操作系统管理
全局区(静态区):储存静态变量、全局变量、常量(常量内存不可以修改)
代码区:储存程序运行的二进制代码
栈和堆的生长方向:
栈:从大(地址)到小(地址);
堆:从小(地址)到大(地址);
指针经典错误
char* a = "abcdef"; //指针指向常量区的字符串把常量区的地址赋值到指针变量中,指针变量在栈区
此时如果再给*a赋值一个其他的字符会报错
- 引发异常写入权限访问冲突
小结
学好内存四区,我觉得对于学好指针挺关键的。