示例代码
#include <iostream> // 全局变量 存储在静态区 int IntNum = 0; // 静态全局变量 存储在静态区 static int StaInitNum = 0; int main(int argc, char **argv) { // 静态局部变量 存储在静态区 static int MainStaInitNum = 0; // 局部变量 存储在栈区 char c_str[] = "hello world"; // 指针变量 存储在栈区 char *p = c_str; // 指针变量 通过new申请的动态内存存储在堆区 char *p_str = new char[10]; // 执政变量 存储在栈区 ”hello world“存储在常量区 char *_str = "hello world"; // 释放申请的动态内存 delete[] p_str; return 0; }
代码区:存放程序代码,在计算机中以二进制方式保存。
栈区:存放函数内的局部变量,形参和函数返回值,栈区的数据由操作系统分配也是由操作系统自动释放。
堆:使用malloc和new申请的内存块,如果我们不手动释放,在程序结束后系统会自动回收,一般在编写程序的过程中需要手动释放申请的内存(free和delete)否则可能会造成内存泄漏问题。
全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在C语言中还分:在未初始化的全局变量和静态变量、已初始化的全局变量和静态变量。但是在C++中没有这个区分,他们共同占用同一块内存区。
常量存储区:存放常量,不允许修改。