Xcode的仪器中显示了哪些Malloc内存泄漏,我该如何解决?

时间:2019-05-02 19:33:02

标签: ios xcode instruments

我最近开始着手优化Swift应用程序中的内存使用情况。当我开始使用泄漏仪器时,我收到了超过100个“ Malloc”泄漏,没有任何描述。我环顾四周,但找不到解释。

我正在运行iOS 12.0和Xcode 10.2

我什至注释掉了ViewDidLoad中被调用的所有函数,但仍然有大约50个Malloc泄漏。 我研究了导致内存泄漏的原因,并且我的代码中没有任何暗示泄漏的信息,但是我对内存管理还是相当陌生的。

对于我的应用程序来说,重要的是不要泄漏,因此任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

假设您有一个非常简单的代码

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int mem(long int mem) {
    char *buffer = malloc(sizeof(char) * mem);
    if(buffer == NULL) {
        return 1;
    } else {
        return 0;
    }
}

int main(int argc, const char * argv[]) {
    long int mem_to_alloc = 2;
    for(int i=0; i<30; i++, mem_to_alloc *= 2) {
        printf("Allocation: %d Allocating: %ld\n", i, mem_to_alloc);
        if( mem(mem_to_alloc) == 1 )
          break;
        sleep(1);
    }
    return 0;
}

首先,请确保在Build Scheme中设置正确的配置

enter image description here

Instruments中选择Leaks

enter image description here

运行代码后,您应该会在右侧看到调用堆栈(Stack Trace)的可疑分配。

enter image description here