c++ - 在子函数中分配 CFString

标签 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()

最佳答案

CFStringCreateWithCString() 返回一个 CFStringRef,而不是一个 CFStringRef *。您必须取消引用分配中的指针:

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

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

关于c++ - 在子函数中分配 CFString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780068/

相关文章:

c - 为什么我的分数是零?

没遇到过的C错误

c++ - 为什么会发生这种情况c++

c++ - 重载运算符 '>>' 的使用不明确(操作数类型为 'istream'(又名 'basic_istream<char>')和 'MyIncreEx')

c - 在二叉搜索树中搜索

c# - MonoTouch - 来自 Pointer 的 CGImage 使应用程序崩溃 - iPhone

c - 指针如何引用多字节变量?

C++:获取包含成员子对象的完整对象的地址

c++ - 我们可以有一个静态的虚函数吗?如果不是,那为什么?

c++ - 内存泄漏,窗口是否有防止达到最大内存的保护措施?