计算机划分的内存区域
内存划分区域 | 储存内容 | 管理者 | 申请和释放过程 | 可能因为操作不当导致的BUG |
---|---|---|---|---|
堆区 heap |
动态变量 | 由程序员手动申请与释放的动态内存区域 | 使用Malloc/new free/delete 指令分配和释放 |
不及时释放可能照成(内存泄漏) (例如递归函数不释放内存) |
栈区 stack |
局部变量 | 由编译器(程序自己决定)内存的分配和释放 | 当函数、执行结束后 程序自行释放 |
当内存被占满时会照成(内存溢出) |
全局\静态区 global |
全局变量、 静态变量 常数 |
由系统分配和释放的内存区域 | 当程序运行结束后, 由系统释放 |
|
代码区 code |
函数体的二进制代码 | 由操作系统分配和释放 | 完全由系统托管 |