c - 简单的 C 程序在 Windows 上崩溃

标签 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 编译器。

最佳答案

您正在产生堆栈溢出 - 通过递归调用您的函数内存泄漏

您的memory_leak版本分配一个本地(“堆栈”)变量,该变量将在函数退出时释放/销毁/解除分配。

要真正造成内存泄漏,您需要从堆中分配内存(例如使用newmalloc)。

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

[不要在 memory_leak 内无条件调用 memory_leak。]

关于c - 简单的 C 程序在 Windows 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357873/

相关文章:

在 Ubuntu 上运行 Java 时间比在 Windows 上运行缩短 1 小时

c++ - 在 Windows 中使用 DevC++ 和在 Ubuntu 中使用 gcc 写入文件有什么区别

ios - 面试 - 将 C++ 库与 iOS 应用程序集成

c - 为什么 linkat 需要路径名而不是文件描述符?

windows - 您可以从服务器端 javascript 调用 COM 组件吗?

c++ - 如何获取当前用户权限组?

gcc - 去掉cpp生成的注释

c++ - mktime 仅处理 Clang 上的闰年?

c++ - 使用大型库是否会固有地使代码变慢?

c - 将列表添加到 C 中已有的列表中