我最近开始着手优化Swift应用程序中的内存使用情况。当我开始使用泄漏仪器时,我收到了超过100个“ Malloc”泄漏,没有任何描述。我环顾四周,但找不到解释。
我正在运行iOS 12.0和Xcode 10.2
我什至注释掉了ViewDidLoad中被调用的所有函数,但仍然有大约50个Malloc泄漏。 我研究了导致内存泄漏的原因,并且我的代码中没有任何暗示泄漏的信息,但是我对内存管理还是相当陌生的。
对于我的应用程序来说,重要的是不要泄漏,因此任何帮助将不胜感激!
答案 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
中设置正确的配置
在Instruments
中选择Leaks
运行代码后,您应该会在右侧看到调用堆栈(Stack Trace
)的可疑分配。