【发布时间】:2011-07-09 09:35:45
【问题描述】:
我正在处理缓冲区溢出问题,但我对在 Mac OS 上运行以下简单 C 程序时发现的内容感到困惑。
#include <stdio.h>
int main(void) {
char buf[2];
scanf("%s", buf);
printf("%s\n", buf);
}
通过将 buf 的长度设置为 2 个字节,我预计在输入字符串“CCC”时会导致分段错误,但这并没有发生。只有当输入长度为 24 个字符的字符串时,才会出现分段错误。
发生了什么事?是不是跟字符编码有关?
谢谢。
【问题讨论】:
标签: c segmentation-fault undefined-behavior