【发布时间】:2012-10-24 04:57:27
【问题描述】:
在使用 char* 编写跨平台的内存访问代码时有什么陷阱吗?
更新:例如,如果地址与该类型的大小对齐,我应该在将取消引用的 char* 转换为某种类型(例如 int)之前检查吗?某些架构会在未对齐访问时返回奇怪的结果吗?
我正在开发一个播放内存分配器,以更好地了解如何调试内存问题。我开始相信 char* 更可取,因为它能够进行指针运算并取消对 void* 的引用,这是真的吗?以下假设在不同的常见平台上是否始终成立?
sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)
【问题讨论】:
-
除非您取消引用
char实例,否则您将不得不将char*和void*转换为它们指向的任何类型。 -
不知道它是否“保证”,但根据我的经验,前两个应该是安全的。最后一个……??。
标签: c++ pointers cross-platform