在子功能中分配CFString

时间:2011-04-25 15:39:33

标签: 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;
}

它会编译并发出警告,但不会打印“hi”。这有什么不对?

编辑: 添加了CFRelease()

1 个答案:

答案 0 :(得分:5)

CFStringCreateWithCString()会返回CFStringRef,而非CFStringRef *。您必须取消引用赋值中的指针:

*ref = CFStringCreateWithCString(NULL, "hi", kCFStringEncodingUTF8);

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