【发布时间】:2020-03-27 05:36:54
【问题描述】:
我创建了一个小测试来创建内存泄漏并使用leaks 命令测试终端中的泄漏。现在我遇到了一个奇怪的 NULL 行为。那么任何解释为什么其他代码泄漏,而另一个没有?他们真的不一样吗?
int main(void)
{
char *ptr;
char *btr;
ptr = NULL;
btr = (char*)malloc(4);
btr = ptr;
while (1)
;
return (0);
}
// LEAKS
int main(void)
{
char *btr;
btr = (char*)malloc(4);
btr = NULL;
while (1)
;
return (0);
}
//NO LEAKS ?? why
【问题讨论】:
-
你是如何检查泄漏的?
-
究竟是什么决定了“泄漏”与“无泄漏”?看来要么是你欺骗了你的分析器,要么是一些编译器优化使代码变得不同。
-
另外,不要转换
malloc的返回值。 stackoverflow.com/questions/605845/…(与问题无关) -
您如何确定泄漏?您是否考虑编译器优化?
-
我猜你正在使用 OS X leaks 命令?
标签: c pointers memory-management memory-leaks null