逐字节读写 32 位数据数组是否安全?

Is it safe to read and write on an array of 32 bit data byte by byte?

所以我有一个 void * 的 32 位无符号整数数据,代表像素。我可以访问带有 char * 的像素之一并直接修改值吗?还是将我的新像素存储在临时 uint32_t 变量中然后分配正确的指针取消引用或至少 memcpy?

更好?

根据硬件平台,我是否会遇到内存对齐或性能问题?

是的,没关系。

数组中没有未使用的字节,因此如果您使用 uint32_t,您可以确保每个元素正好使用 32 位。

是的,这是正确的。唯一的危险是生成一个不对应于任何 int 的位模式,但在现代系统上没有这样的模式。此外,如果数据类型具体为 uint32_t,则无论如何都禁止使用任何此类模式。

请注意,不允许使用 uint32_t 一次写入多个 char 的相反情况(严格的别名规则)。