c - 数组大于分配?

标签 c

我有一个声明为 char buff[8] 的数组。那应该只有 8 个字节,但在汇编和测试代码时,当我向该 buff 输入大于 32 个字符的内容时,我会遇到段错误,而我希望它大于 8 个字符。这是为什么?

最佳答案

你说的并不矛盾:

  • 您有 8 个字符的空间。

  • 输入超过 32 个字符时会出错。

那又怎样?

重点是没有人告诉您如果输入超过 8 个字符就一定会出错。这只是未定义的行为,任何事情都可能(并且将会)发生。

您绝对不能认为没有明显的不当行为就可以证明您的代码的正确性。代码的正确性只能通过根据语言规则检查代码来验证(尽管 valgrind 等一些自动化工具提供了巨大的帮助)。

关于c - 数组大于分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057584/

相关文章:

c - 除非存在另一个 printf,否则 Printf 不起作用

c - c中的形式参数和实际参数

c - 为 Windows 编写自己的备忘录

c - 如何将函数值返回到主函数以在另一个函数中使用?

挑战C编程

将字符串从argv复制到C中的char数组

c - 在 OS X 中获取 CPU 拱形字符串(C、Cocoa)

c - 如何在cygwin下AllocConsole + Stdout重定向

c++ - sizeof(some pointer) 是否总是等于四?

c - 并行数组的元素之和?