c 变量在内存中的区域
C 变量在内存中的区域
内存区域 | area | 变量类型 |
---|---|---|
栈 | stack | 函数的参数,内部作用域的变量 |
堆 | heap | malloc()等动态申请的变量 |
静态区 | static | 全局变量,静态变量 |
常量区 | const | 常量,常量字符串 |
栈 stack
存放局部变量:
- 函数的参数
- 函数内部作用域的变量
如,
int func(int var)
{
int ret = var;
return ret;
}
堆 heap
存放动态变量:
- malloc()等动态申请的变量
如,
void *p = malloc(some_size);
静态区 static
存放静态变量:
- 全局变量
- 静态变量
包括:
- 初始化的静态区
- 未初始化的静态区
如,
int global_var;
int func()
{
static int static_var;
return static_var;
}
常量区 const
存放常量:
- 常量
- 常量字符串
常量可能存放于:
- 可能是
内存的常量区
- 可能是
flash
中
如,
const int const_var = 100;
"string is stored in the const area"