小编Mat*_*ewN的帖子

使用mallloc每隔三分钟运行我的程序进行分段错误

我几乎每隔三次就会遇到一个分段错误,我正在努力理解为什么.我认为它的原因是使用malloc()free()错误.我必须读取用户标准输入,然后使用malloc将其保存在数组中.这部分工作,直到错误开始发生.

我的代码:

char *Input() {
    char user_input;
    int length;

    char *buffer = malloc(2 * sizeof(char));

    while (((user_input = getchar(stdin)) != EOF) && (user_input != '\n')) {
        buffer[length] = user_input;
        length++;
        char *buffer_new = realloc(buffer, length + 2);
        if (buffer_new != NULL) {
            buffer = buffer_new;
        } else {
            free(buffer);
            printf("Error.\n");
            return 1;
        }
    }

    buffer[length] = '\0'; 

    if (strlen(buffer) > 200) {
        printf("Error.\n");
        return 2;
    }

    return buffer;
}
Run Code Online (Sandbox Code Playgroud)

我不确定我的错误在哪里或错误发生的原因.以下是我如何调用该函数:

int main() {
    char *input = …
Run Code Online (Sandbox Code Playgroud)

c pointers realloc dynamic-memory-allocation

1
推荐指数
1
解决办法
64
查看次数

标签 统计

c ×1

dynamic-memory-allocation ×1

pointers ×1

realloc ×1