在哪个段中分配了库函数的内存?

Ked*_*arX 4 c linker memory-management

自动变量/局部变量继续堆栈的方式,动态分配的对象/数据类型继续堆; 分配了库函数调用(比如printf())的内存在哪里.在哪个细分市场?

Dig*_*oss 5

静态链接

对于静态链接的程序,库代码与应用程序合并,并且程序和库之间的几乎所有区别都将丢失,即,每个对象最终都在主程序中类似对象占据的相同部分中.

动态链接

对于动态链接程序,如果一个对象是可写的而不是自动的,那么将在每个使用该库的进程中分配内存页面,并且仅为动态加载的库存在数据部分(或多个部分).

汽车

自动变量在堆栈上以相同的方式分配给主程序,静态链接库函数和动态库.链接过程在此没有任何作用,相反,生成的代码只是从堆栈指针中减去每个例程的本地自动空间要求的特定量.

本地非自动

本地静态变量由链接器以模块静态和全局地址的方式分配,它们只是没有全局可链接的名称.

最后,库例程将链接相同malloc()(或其他),因此所有堆分配将以相同的方式从同一组地址进行.