我有一个声明为 char buff[8] 的数组。那应该只有 8 个字节,但在汇编和测试代码时,当我向该 buff 输入大于 32 个字符的内容时,我会遇到段错误,而我希望它大于 8 个字符。这是为什么?
最佳答案
你说的并不矛盾:
您有 8 个字符的空间。
输入超过 32 个字符时会出错。
那又怎样?
重点是没有人告诉您如果输入超过 8 个字符就一定会出错。这只是未定义的行为,任何事情都可能(并且将会)发生。
您绝对不能认为没有明显的不当行为就可以证明您的代码的正确性。代码的正确性只能通过根据语言规则检查代码来验证(尽管 valgrind
等一些自动化工具提供了巨大的帮助)。
关于c - 数组大于分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057584/