我写了一个简单的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 编译器。
最佳答案
您正在产生堆栈溢出 - 通过递归调用您的函数内存泄漏
。
您的memory_leak
版本分配一个本地(“堆栈”)变量,该变量将在函数退出时释放/销毁/解除分配。
要真正造成内存泄漏,您需要从堆中分配内存(例如使用new
或malloc
)。
void* memory_leak()
{
return malloc(10);
}
[不要在 memory_leak
内无条件调用 memory_leak
。]
关于c - 简单的 C 程序在 Windows 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357873/