memset仅安全用于POD类型零初始化或全-1填充,因它按字节操作;赋非0/-1值会导致错误(如memset(arr,1,n)使int数组变为0x01010101);应优先使用c++原生初始化语法或std::fill。

memset 只能初始化为 0 或 -1,别用它赋任意值
memset 是字节级填充,它把目标内存区域每个字节都设成你传的 int 参数的**低 8 位**。所以 memset(ptr, 1, size) 不是给每个 int 赋值 1,而是让每个字节变成 0x01 —— 对 int 数组来说,这实际写入的是 0x01010101(小端),即十进制 16843009。
常见错误场景:
- 想把
int arr[10]全设为 1,写了memset(arr, 1, sizeof(arr))→ 结果全是垃圾值 - 用
memset(buf, 'A', len)初始化字符数组看似没问题,但若len算错或buf未以