gpt4 book ai didi

c - 哪些 C 标准库函数在底层使用 malloc

转载 作者:IT王子 更新时间:2023-10-29 00:10:03 24 4
gpt4 key购买 nike

我想知道哪些 C 标准库函数在底层使用了 mallocfree。在我看来,printf 似乎会使用 malloc,但是当我用 valgrind 测试程序时,我注意到 printf 调用未使用 malloc 分配任何内存。怎么来的?那么它是如何管理内存的呢?

最佳答案

通常,C99 标准中唯一可能使用 malloc() 的例程是标准 I/O 函数(在 <stdio.h> 中,其中文件结构和它使用的缓冲区通常由 malloc() 分配。一些语言环境处理可能使用动态内存。所有其他例程都不需要一般动态内存分配。

现在,是否有任何正式记录?不,我认为不是。没有一揽子限制'库中的函数不得使用malloc() '. (但是,对其他函数有限制 - 例如 strtok()srand()rand() ;它们可能不会被实现使用,并且实现可能不会使用任何可能返回指针的其他函数到静态内存位置。)但是,strdup() 极其有用的原因之一。函数不在标准 C 库中(据报道)是因为它进行内存分配。还不完全清楚这是否是例程中的一个因素,例如 asprintf()vasprintf()在 TR 24731-2 中没有进入 C1x,但这可能是一个因素。

关于c - 哪些 C 标准库函数在底层使用 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8477110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com