示例代码
#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++中没有这个区分,他们共同占用同一块内存区。
常量存储区:存放常量,不允许修改。