c - malloc() 中的奇怪段错误 - C

标签 c linux segmentation-fault malloc

你好,我正在写一个程序,我用这种方式声明了一个字符串:

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/

相关文章:

c - 如何从c程序中检索其procees id的进程状态?

c++ - C 的 SOLID 原则实现

c - Makefile 给出重复错误 C

c - 我如何判断文件是否在 Linux 的 C 中的其他地方打开?

C : Get a segmentation fault when generating random maze

c - Glib:创建 GDBusProxy 时内存泄漏

python - cocos.layer 包在 PyDev 中被报告为不存在

linux - 从目录子树的各级按扩展名删除文件而不破坏目录结构

c - C中的段错误

c - 分段故障。运行时错误