Malloced char *但崩溃并说它没有被malloced

时间:2016-03-12 05:00:41

标签: c malloc scanf

我正在使用字符串

int main(){
    int buf = 1024;
    char *input = malloc(sizeof(char*) * buf);

    //CODE
    scanf("%s", input);
    //MORE CODE

    free(input);
}

如果我没有将输入字符串设置为它可以工作的任何东西,它会在设置为某事时崩溃。

malloc: *** error for object 0x100f01efa: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

我认为我正确地做了但不确定为什么它会崩溃。

2 个答案:

答案 0 :(得分:0)

你需要malloc个字符而不是字符指针。

即。变化

sizeof(char*)

1

或者只是把

char *input = malloc(buf);

答案 1 :(得分:0)

我会在一段时间之前发现问题的答案。

我需要更改sizeof以获取单个char的大小,而不是指针。

char *input = malloc(sizeof(char) * buf);