你好,我正在写一个程序,我用这种方式声明了一个字符串:
char *string=malloc(sizeof(char));
在我的笔记本电脑中,我使用的是 64 位 Mint 操作系统,并且一切正常。但是在 32 位 Debian 机器中,我在那行代码中遇到了段错误。如果我声明没有 malloc 的字符串,就像这样:char string [100] 程序工作正常。当我用 GDB 运行程序时,它说找不到 malloc.c 或类似的东西。这种行为合乎逻辑吗?如果有人以前遇到过同样的问题,请解释一下为什么会这样?谢谢提前。
最佳答案
您只为字符串分配了 1 个字节,因此您可能正在覆盖其他变量或 malloc 堆结构。
改变:
char *string=malloc(sizeof(char));
更逼真的尺寸,例如:
char *string=malloc(256);
关于c - malloc() 中的奇怪段错误 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586159/