Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management 目标c中的malloc和内存泄漏_Memory Management_Automatic Ref Counting - Fatal编程技术网

Memory management 目标c中的malloc和内存泄漏

Memory management 目标c中的malloc和内存泄漏,memory-management,automatic-ref-counting,Memory Management,Automatic Ref Counting,在目标c中使用malloc时,我遇到了内存泄漏问题。 代码如下: .h(接口) m.m(执行) 有人能帮我解决问题吗?我假设malloc(sizeof(*bufferData))您指的是上面的malloc(helloworld.length)(因为在您的示例中,这是我看到的唯一malloc调用) 清除缓冲区时会发生内存泄漏: bufferData[i] = nil; 这会泄漏,因为您使用malloc分配了缓冲区内容,但后来没有使用free释放缓冲区内容。请注意,即使在ARC下,您也必须自己释放

在目标c中使用malloc时,我遇到了内存泄漏问题。 代码如下:

.h(接口)

m.m(执行)

有人能帮我解决问题吗?

我假设
malloc(sizeof(*bufferData))
您指的是上面的
malloc(helloworld.length)
(因为在您的示例中,这是我看到的唯一
malloc
调用)

清除缓冲区时会发生内存泄漏:

bufferData[i] = nil;
这会泄漏,因为您使用
malloc
分配了缓冲区内容,但后来没有使用
free
释放缓冲区内容。请注意,即使在ARC下,您也必须自己
释放
任何
malloc
ed资源。ARC仅为Objective-C对象实例提供管理

此处释放缓冲区的正确方法是:

free(bufferData[i]);
bufferData[i] = NULL;
malloc(sizeof(*bufferData));
bufferData[i] = nil;
free(bufferData[i]);
bufferData[i] = NULL;