首页 > 解决方案 > 仅使用 CMake 检测到堆损坏

问题描述

我正在尝试遵循 buildyourownlisp 教程,但在释放存储用户输入的内存时遇到问题。我以为我在 lisp 实现部分犯了一个错误,但即使我删除了除了读取输入和尝试释放内存之外的所有内容,我也会收到Heap Corruption Detected如下图所示的错误:

在此处输入图像描述

    char* readline(char* prompt){
        fputs(prompt, stdout);
        fgets(input_buffer, 2048, stdin);

        char* copy = malloc(strlen(input_buffer+1));
        strcpy(copy, input_buffer);
        copy[strlen(copy)-1] = '\0';

        return copy;
    }
    while (1){
        char* input = readline("hello> ");
        free(input);
    }

我意识到如果我使用 CMake,我会收到此错误。

尝试直接使用 GCC,它可以正常工作。

谢谢你。

标签: cvisual-c++cmake

解决方案


推荐阅读