对C程序的存储空间布局的初识

简介: 今天在老师的指引下我考虑了C语言的存储空间布局,才深深的感到了自己是个小白,什么也不懂,或许那句话“程序员为啥会犯错误,不是因为他不懂什么而是因为觉得自己都懂。”

今天在老师的指引下我考虑了C语言的存储空间布局,才深深的感到了自己是个小白,什么也不懂,或许那句话“程序员为啥会犯错误,不是因为他不懂什么而是因为觉得自己都懂。”


正文:

之所以在C中能自如的调用函数那都是因为栈(stack)的存在,在栈中保存着函数调用的场景信息,这句话是书上的,我是这么理解的,这些场景信息也就是包括函数的入口地址,形参,函数的返回值,以及一些寄存器的值。栈是自动分配内存的。


C语言的存储空间从高地址到低地址依次是:

命令行参数和环境变量:

栈:

堆:

非初始化数据段:未初始化的全局变量和静态变量

初始化数据段:已经初始化的全局变量和静态变量

正文段:程序就在这里


此外小知识点我还要捡起来:

printf:输出无符号整形变量 用%u

          输出十六进制  用%x


今天我学到的新名词:栈帧(未完全懂)


1.静态库libstatic.a和动态库dynamic.dll

我的认识:

2.为什么要引入段地址?

inter提出用段地址+偏移地址的方式来寻址,这是为了让CPU能访问更多的内存,如果有偏移地址的话,可用的最大内存只有64KB,也就是说:

段地址存在最初意义是为了隔离。

目录
相关文章
|
10月前
|
存储 Web App开发 Windows
LabVIEW使用VI Snippets存储和共享重用代码段
LabVIEW使用VI Snippets存储和共享重用代码段
88 0
|
9月前
|
存储
文件操作(下)(想要了解如何操作文件,那么看这一片就足够了!)
文件操作(下)(想要了解如何操作文件,那么看这一片就足够了!)
文件操作(下)(想要了解如何操作文件,那么看这一片就足够了!)
|
9月前
|
存储 编译器 Windows
文件操作(上)(想要了解如何操作文件,那么看这一片就足够了!)
文件操作(上)(想要了解如何操作文件,那么看这一片就足够了!)
|
10月前
|
存储 图形学 Android开发
Unity 数据读取|(一)宏的定义和资源路径
Unity 数据读取|(一)宏的定义和资源路径
|
存储 安全 Windows
【Windows10】Win10存储空间的作用以及如何创建存储空间
【Windows10】Win10存储空间的作用以及如何创建存储空间
555 0
|
存储 编译器 芯片
IAR编译器如何节省代码占用的flash空间?
IAR编译器如何节省代码占用的flash空间
纹理,这次没用Shader头文件,但是没有报“超出内存”的错误,不知道为什么
纹理,这次没用Shader头文件,但是没有报“超出内存”的错误,不知道为什么
|
Linux Windows
CLion 在头文件和源文件之间切换
该快捷方式在键盘图中称为“相关符号”。
2389 0
|
C语言 索引
【C 语言】文件操作 ( ftell 函数 | 使用 ftell 函数获取当前指针位置 | 通过 ftell 计算文件大小 )
【C 语言】文件操作 ( ftell 函数 | 使用 ftell 函数获取当前指针位置 | 通过 ftell 计算文件大小 )
460 0
【C 语言】文件操作 ( ftell 函数 | 使用 ftell 函数获取当前指针位置 | 通过 ftell 计算文件大小 )
|
存储 Linux 开发工具
Qt编写自定义控件34-磁盘容量统计
一、前言 磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间、剩余空间、总大小、已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色及文字颜色可以设置,在整体换肤的时候就需要用到。
873 0