【发布时间】:2019-05-03 08:38:14
【问题描述】:
我对@987654322@ 及其manual's entry 有疑问。这是我在 memset 的手册中看到的内容:
void *memset(void *s, int c, size_t n);[...]
描述
memset() 函数填充内存区域的前 n 个字节 由 s 用常量字节 c 指向。
[...]
手册上说with the constant byte c,但c 是一个整数,其大小实际上取决于几个因素(编译器、架构...)。
一般情况下,sizeof(int) > 1(通常是4)。
我的问题是:为什么c 不是char,它总是有sizeof 的1,因此对应一个字节?
然后,memset 在边界情况下的“真实”行为是什么(未定义?)?
所谓边界情况,我的意思是例如sizeof(int) = 4 和n=7 的情况。
【问题讨论】: