我想在子函数中为 CFString 分配空间。像这样:
void fun(CFStringRef *ref)
{
ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);
}
int main(void)
{
CFStringRef ref;
fun(&ref);
CFShow(ref);
if(ref) CFRelease(ref);
return 0;
}
它确实编译时带有警告并且不打印“hi”。这里有什么问题吗?
编辑: 添加了 CFRelease()
最佳答案
CFStringCreateWithCString()
返回一个 CFStringRef
,而不是一个 CFStringRef *
。您必须取消引用分配中的指针:
*ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);
编辑:对于你的下一个问题,请不要只说“编译时有警告”。告诉我们实际的警告信息。它使回答您的问题变得容易得多。
关于c++ - 在子函数中分配 CFString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780068/