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"