我写了一个简单的c程序来模拟内存泄漏。但是当我尝试运行它时崩溃了。
#include <stdio.h>
#include <stdlib.h>
void memory_leak(void);
int main()
{
memory_leak();
return EXIT_SUCCESS;
}
void memory_leak()
{
int i = 100;
memory_leak();
}
我使用MinGW gcc编译器。
答案 0 :(得分:2)
通过递归调用函数memory leak
,产生堆栈溢出。
您的memory_leak
版本会分配一个本地(&#34;堆栈&#34;)变量,该函数将在函数退出时释放/销毁/取消分配。
要实际创建内存泄漏,您需要从堆中分配内存(例如,使用new
或malloc
)。
void* memory_leak()
{
return malloc(10);
}
[请勿在{{1}}内无条件致电memory_leak
。]