我想在子函数中为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;
}
Run Code Online (Sandbox Code Playgroud)
它确实编译了警告,不打印"hi".这有什么不对?
编辑:添加CFRelease()
CFStringCreateWithCString()返回a CFStringRef,而不是a CFStringRef *.您必须取消引用赋值中的指针:
*ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);
Run Code Online (Sandbox Code Playgroud)
编辑:对于您的下一个问题,请不要只说"它编译警告".告诉我们实际的警告信息.它使得回答您的问题变得更加容易.