在C中分配内存

时间:2013-09-16 10:29:01

标签: c

据我所知C:

一个。全局和静态变量位于数据段

湾调用函数时,将在堆栈上分配内存以保存 参数值,局部变量和调用的地址 功能

℃。结构根据最大的对齐要求进行对齐 它的成员。

我想知道这些定义的基础是什么? 是否有关于这些的手册或书籍?

4 个答案:

答案 0 :(得分:2)

这些主要是实现细节,因此最好参考C编译器的手册/文档。

答案 1 :(得分:0)

您可能想了解gcc的C可执行文件的内存布局。我认为这会有所帮助。 Memory layout in C

答案 2 :(得分:0)

这些都是纯粹的实施细节;不能保证您甚至拥有数据段,也不能保证所有函数参数都通过堆栈传递(它们可以通过寄存器传递)。

这取决于处理器体系结构(x86,SPARC,MIPS,PA-RISC,Power),并且在某种程度上取决于操作系统,因此您需要从开发人员的指南开始,了解您感兴趣的体系结构,例如Intel

答案 3 :(得分:0)

编译器文档。关于如何在幕后工作的一个很好的细分是关于x86 Assembly的任何书籍。有些编译器允许在其C代码中进行内联汇编,因此您可以尝试在汇编中重写一些C代码,以查看是否可以匹配编译器正在执行的操作。它应该为您提供堆栈,对齐等的工作知识。