正如我在 C 中所知道的:
一个。全局变量和静态变量位于数据段
湾。调用函数时,会在堆栈上分配内存来保存参数值、局部变量和调用函数的地址
C。结构根据其成员的最大对齐要求进行对齐。
我想知道这些基于什么来定义?有没有关于这些的手册或书籍?
正如我在 C 中所知道的:
一个。全局变量和静态变量位于数据段
湾。调用函数时,会在堆栈上分配内存来保存参数值、局部变量和调用函数的地址
C。结构根据其成员的最大对齐要求进行对齐。
我想知道这些基于什么来定义?有没有关于这些的手册或书籍?
这些主要是实现细节,所以最好查阅你的 C 编译器的手册/文档。
这些都是纯粹的实现细节;不能保证您甚至有一个数据段,也不能保证所有函数参数都通过堆栈传递(它们可能通过寄存器传递)。
这取决于处理器架构(x86、SPARC、MIPS、PA-RISC、Power),并在某种程度上取决于操作系统,因此您需要从您感兴趣的架构的开发人员指南开始,例如Intel .
编译器文档。任何关于 x86 Assembly 的书都可以很好地了解幕后一切是如何工作的。一些编译器允许在其 C 代码中进行内联汇编,因此您可以尝试在汇编中重写一些 C 代码,以查看是否可以匹配编译器正在执行的操作。它应该为您提供堆栈、对齐等方面的工作知识。
您可能想了解 gcc 的 C 可执行文件的内存布局。我认为这会有所帮助。C中的内存布局