Повреждение кучи обнаружено только с помощью CMake - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь следовать руководствам по buildyourownlisp, но у меня возникла проблема с освобождением памяти, в которой я храню вводимые пользователем данные. Я думал, что совершил ошибку в части реализации lisp, но даже если я удалю все, кроме чтения ввода и попытки освободить память, я получаю ошибку Heap Corruption Detected, как показано ниже:

enter image description here

    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.

Пробовал использовать G CC напрямую, и он работает без проблем.

Спасибо.

...