不知道你有没有想过什么是程序?程序 = 数据结构 + 算法
再往内部粗略的理解,计算机硬件只能识别0和1这两种数字量,非0即1,非黑即白
当然今天不探讨这些,主要聊一聊程序中的数据在内存中存放的位置及形式,相信这会对进一步理解程序有一定的帮助!
主要来源于网络,如有不正确的地方,望大家不吝指正。
参考文章:https://blog.csdn.net/second60/article/details/79946310
https://cloud.tencent.com/developer/article/1193929
1. 主要分区
主要分为四个区域:堆、栈、全局数据区以及代码区【堆栈代全】
①堆(heap):由程序员自行负责申请和释放,如果申请空间但是没有释放,程序结束时由操作系统进行回收。
一些相关问题:malloc、free与new、delete的区别及联系?由此C++11中的智能指针的作用,内存泄漏与野指针对程序的危害。
②栈(stack):由系统自动分配释放,存放局部变量、函数参数等。
相关问题:程序为什么不能返回局部指针变量?
③全局数据区:全局变量、静态变量、一般常量、字符串常量
全局数据:全局变量、静态变量放在一块,区分初始化与未初始化【可读可写】
未初始化:bss段
已初始化:data段
常量数据:一般常量、字符串常量【只读】
相关问题:1>静态全局变量与静态局部变量区别?