gpt4 book ai didi

iphone - 当我使用像 mktemp() 这样的函数时,auto-free()ing 如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:29 25 4
gpt4 key购买 nike

问候,

我正在使用 mktemp()(iPhone SDK),此函数返回一个 char * 到新文件名,其中所有“X”都被随机字母替换.

让我感到困惑的是,返回的字符串自动为 free()d。这是如何(以及何时)发生的?我怀疑它与 Cocoa 事件循环有关。是否被内核自动释放?

提前致谢!

最佳答案

mktemp 只是修改您传入的缓冲区,并返回您传入的相同指针,没有额外的缓冲区可以释放。

至少 OSX manpage 是这样的描述了它(我找不到 iPhone 的文档)和 posix 联机帮助页(尽管 posix 中的示例 manpage 看起来是错误的,因为它传递了一个指向字符串文字的指针 - 可能是旧的残余,函数也被标记为遗留 - 请改用 mkstemp。OSX 联机帮助页特别提到这是一个错误)。

所以,这就是将要发生的事情:

char template[] = "/tmp/fooXXXXXX";
char *ptr;
if((ptr = mktemp(template)) == NULL) {
assert(ptr == template); //will be true,
// mktemp just return the same pointer you pass in
}

关于iphone - 当我使用像 mktemp() 这样的函数时,auto-free()ing 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958732/

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