使用 char* 编写进行内存访问的跨平台代码时是否有任何陷阱?
更新:例如,如果地址与该类型的大小对齐,我应该在将取消引用的 char* 转换为某种类型(比如 int)之前检查吗?某些架构会在未对齐访问时返回奇怪的结果吗?
我正在开发一个播放内存分配器,以更好地了解如何调试内存问题。我开始相信 char* 更可取,因为它能够进行指针运算并取消对 void* 的引用,这是真的吗?以下假设在不同的常见平台上是否始终成立?
sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)