本文共 603 字,大约阅读时间需要 2 分钟。
作为一个程序员,可能你每天的任务只是按照产品经理的设计完成不同的界面,或许在这样年复一日的工作中,你的技术得到了提升,但却缺少对自己知识系统的总结,这样的进步无疑是缓慢的。博主本人会从一些基本的知识点持续更新相关的文章,期待你的关注。
作为一个程序员对于进程内存布局要耳熟能详:
栈区
1.系统分配,系统释放 2.代码执行过程中分配,释放 3.普通局部变量,形式参数(函数形参) 4.生存期:复合语句或函数开始运行到复合或函数运行结束 5.作用域:复合语句或函数内 6.未初始化时为野值 7.先进后出 8.空间有限 堆区 1.程序员自己分配,释放 2.代码执行过程中分配,释放 3.自由存储,空间很大 4.小心内存泄漏 5.生存期:分配代码开始到释放代码结束 6.作用域:视首地址持有者属性而定 7.无法初始化,开始为野值(使用memset)。 malloc free memcpy 数据区 1.系统分配,系统释放 2.未初始化时被置为0值 3.程序加载到内存时分配,程序运行结束后释放 4.全局变量,静态局部变量,字符串常量(只读) 5.生存期:整个程序运行期 6.作用域:视变量属性而定 代码区 1.系统分配,系统释放 2.程序加载到内存时分配,程序运行结束后释放 3.只读,可执行 4.生存期:整个程序运行期 5.函数名所代表的代码段首地址所在地函数名代表该函数体的二进制指令,所在内存空间的首地址
转载地址:http://jwcti.baihongyu.com/