c - 我应该如何管理 C block 功能的内存? (苹果扩展)

标签 c memory-management block

Apple 在 C 中引入了一个闭包作为“block”的名称。 我应该管理 block 的内存吗?如果是这样,我必须做什么?

最佳答案

就像纯 C 中具有函数作用域的变量一样,函数中的 block 文字具有自动存储持续时间。当您将 block 字面量视为指针类型时,您会发现可能会出错的地方:当您从函数返回 block 时,您返回的是指向本地内存的指针,该指针不再有效。

解决方案是每当你想返回一个 block 时使用Block_copy()函数,当你不再需要它时使用Block_release()

更多信息请参见 this tutorial有单独的部分介绍 C 中的 block 。

关于c - 我应该如何管理 C block 功能的内存? (苹果扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3500100/

相关文章:

C取消引用指针警告,甚至认为它们都是字符

c - 为什么“while(!feof(file))”总是错误的?

c++ - new分配了多少字节?

swift - dispatch_semaphore_signal 不会调用 PHImageManager requestImageDataForAsset

ruby - 方法 ruby​​ 返回 true 或 false

image - 在matlab中将图像分割成像素 block 的错误

C如何读取有效的多个文件?

c++ - 在特定地址反汇编程序中的 x86 代码

c++ - C++ new 运算符能保证返回的指针不会改变它的值吗?

swift - 手动构建 Swift UnsafeMutablePointer 时,是否必须在 alloc 之后进行 destroy/dealloc?