自动变量/局部变量入栈的方式,动态分配的对象/数据类型入栈的方式;库函数调用(比如 printf())的内存分配在哪里。在哪个 segmentation 市场?
最佳答案
静态链接
对于静态链接的程序,库代码与应用程序合并在一起,程序和库之间的几乎所有区别都丢失了,即每个对象最终都位于主程序中类似对象所占据的同一部分.
动态链接
对于动态链接的程序,如果一个对象是可写的而不是自动的,那么内存页面将被分配到使用该库的每个进程中,并且数据部分(或多个部分)将只存在于动态加载的库中。
汽车
对于主程序、静态链接库函数和动态库,自动变量在堆栈上的分配方式相同。链接过程在这方面没有任何作用,相反,生成的代码只是根据每个例程的本地自动空间要求从堆栈指针中减去特定数量。
本地非自动
局部静态变量由链接器以模块静态和全局地址的方式分配,它们只是没有全局可链接的名称。
堆
最后,库例程将链接到相同的 malloc()
(或其他),因此所有堆分配都将以相同的方式从同一组地址进行。
关于c - 库函数的内存分配在哪个段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3789107/