在子功能中分配CFString

1 c++ pointers

我想在子函数中为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()

Ole*_*ann 5

CFStringCreateWithCString()返回a CFStringRef,而不是a CFStringRef *.您必须取消引用赋值中的指针:

*ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);
Run Code Online (Sandbox Code Playgroud)

编辑:对于您的下一个问题,请不要只说"它编译警告".告诉我们实际的警告信息.它使得回答您的问题变得更加容易.