简单的C程序在Windows上崩溃

时间:2016-07-13 17:11:10

标签: c windows gcc recursion memory-leaks

我写了一个简单的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编译器。

1 个答案:

答案 0 :(得分:2)

通过递归调用函数memory leak,产生堆栈溢出。

您的memory_leak版本会分配一个本地(&#34;堆栈&#34;)变量,该函数将在函数退出时释放/销毁/取消分配。

要实际创建内存泄漏,您需要从堆中分配内存(例如,使用newmalloc)。

void* memory_leak()
{
    return malloc(10);
}

[请勿在{{1​​}}内无条件致电memory_leak。]