c - Malloced char* 但崩溃并说它没有 malloc

标签 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

我认为我做得正确,但不太确定为什么会崩溃。

最佳答案

您需要malloc字符而不是字符指针。

即改变

sizeof(char*)

1

或者直接输入

char *input = malloc(buf);

关于c - Malloced char* 但崩溃并说它没有 malloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953970/

相关文章:

C GPGMe 忽略用户 key 环

c - 逐行将文件读入结构中

c - 索引在 for 循环内显示 NULL

c - intptr_t 和 uintptr_t 的字符串格式

c - 我的代码中某个测试用例的奇怪行为

c - 如何在 Delphi 项目中包含/链接 C .lib 文件

c - 我使用 malloc(0) 作为指向 char 的指针,并且我的代码有效。这是为什么?

c++ - 重新分配 char 数组的动态数组

c - 用逗号分隔符和 sscanf 分隔的整数

c - while 循环,从 scanf 读取 int 与 char,true 和 false