我有一个 N 字节长的缓冲区,其中 N 至少为 50。此缓冲区采用非常特定的格式,其中前 4 个字节是一个无符号整数,表示缓冲区的长度(包括这四个字节)。接下来的 16 个字节是四个具有不同含义的无符号整数。接下来的 N-20 字节是一些通用的内存缓冲区。
现在,要设置此缓冲区,我会执行以下操作:
memcpy((char*)my_buf + 0, &buf_size, 4); //buf_size is some unsigned int
memcpy((char*)my_buf + 4, &prop0, 4); //buf_size is some unsigned int
memcpy((char*)my_buf + 8, &prop1, 4); //buf_size is some unsigned int
memcpy((char*)my_buf + 12, &prop2, 4); //buf_size is some unsigned int
memcpy((char*)my_buf + 16, &prop3, 4); //buf_size is some unsigned int
//Many more bytes used as a generic buffer
但是,这似乎非常不雅。在这一点上,我想询问社区是否有一种更优雅的方法可以在给定初始地址时将特定值分配给特定的内存偏移量。
我考虑过使用结构,但 IIRC 结构不保证其成员在内存中的放置顺序,而且我不知道结构如何表示缓冲区的尾部,即通用内存空间。