函数运行时的内存分配
按照内存地址高→低的顺序,函数运行时内核分别为其分配了全局区,常量区,堆,栈,代码区。下面分别讲解☞)
1/全局区0x42……(全局变量,静态变量,局部静态变量,全局静态变量,它们在进入主函数前就已经被初始化,且全局变量可以通过extern声明被跨文件调用)。
a☞局部静态变量退出函数后再次进入时,不再继续初始化,而是继续沿用上次退出时的值。
b☞全局变量的定义最好放在函数的最上方,它的作用范围是定义处至函数结尾;若它不是定义在最上方,也可以通过extern声明将其作用范围拓展至声明处!
c☞全局静态变量,即在定义全局变量时在前面加上static。此时该全局变量的作用范围仅限于本文件中,而其他文件不能通过extern声明引用它。
2/常量区0x42……(存放函数中的字符串常量,一般该区域为只读,不可修改!)
3/堆heap0x38……(由malloc申请分配的区域,可以很大GB,用完之后需要用free释放)
4/程序入口地址(0x0012ff80)
5/栈stack(函数内部定义的局部变量和函数形参)它们在进入函数时自动分配地址,退出函数时自动收回。
6/代码区(该地址区域主要存储程序的源代码,为只读区域,程序运行时不可更改)
原文地址:https://www.jianshu.com/p/9ab59367c664
相关推荐
-
使用libusb检测USB设备插拔状态 c/c++
2019-3-30
-
【C++】 1_C++11 新特性-语言篇 c/c++
2020-6-15
-
C++|带参函数与调用示例 c/c++
2019-3-30
-
高性能计算–OpenMP c/c++
2020-6-15
-
线程同步的三种方式 c/c++
2019-3-30
-
我对C语言的拙劣看法 c/c++
2019-3-30
-
比较C/C++和Delphi中的字符串和字符数组(数组和动态分配内存的情况) c/c++
2019-4-1
-
I/O复用 c/c++
2019-6-30
-
学起来:Flutter将支持桌面应用开发 c/c++
2019-5-4
-
C语言二维数组专题——理解二维数组名 c/c++
2019-3-30