Met*_*est 9 c linux x86 memory-management
我想知道哪些C标准库函数使用malloc和free引擎盖下.它看起来好像printf会使用malloc,但当我测试一个程序时valgrind,我注意到printf调用没有分配任何内存使用malloc.怎么会?那怎么管理内存呢?
通常,C99标准中可能使用的唯一例程malloc()是标准I/O函数(<stdio.h>其中文件结构和它使用的缓冲区通常被分配malloc().一些语言环境处理可能使用动态内存.所有其他例程通常不需要动态内存分配.
现在,有没有正式记录?不,我认为不是.没有全面限制'库中的功能不得使用malloc()'.(有,但是,在其他功能限制-如strtok()和srand()和rand()的;它们可以实现不使用,并且实现可以不使用任何的可能的指针返回到静态存储器位置中的其他功能).然而,strdup()(据报道)极其有用的功能不在标准C库中的原因之一是因为它进行了内存分配.它也并不完全清楚这是否是在程序的因素,如asprintf()和vasprintf()在TR 24731-2没有使它成为C1X,但它可能是一个因素.