我想在子功能中为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()
答案 0 :(得分:5)
CFStringCreateWithCString()
会返回CFStringRef
,而非CFStringRef *
。您必须取消引用赋值中的指针:
*ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);
编辑:对于您的下一个问题,请不要只说“它汇编了警告”。告诉我们实际的警告信息。它使得回答你的问题变得更加容易。