gpt4 book ai didi

c++ - 编写跨平台代码时使用 char* 而不是 void* 有什么陷阱吗?

转载 作者:可可西里 更新时间:2023-11-01 18:37:08 26 4
gpt4 key购买 nike

使用 char* 编写进行内存访问的跨平台代码时有什么陷阱吗?

更新:例如,我是否应该在将取消引用的 char* 转换为特定类型(例如 int)之前检查地址是否与该类型的大小对齐?某些架构会在未对齐访问时返回奇怪的结果吗?

我正在研究游戏内存分配器,以更好地理解如何调试内存问题。我开始相信 char* 更可取,因为它能够进行指针运算并通过 void* 取消引用它们,这是真的吗?以下假设是否始终适用于不同的通用平台?

sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)

最佳答案

sizeof(char)==1 绝对始终为真。

sizeof(char *) == sizeof(void *) 可能也始终为真。 C 标准要求它们具有相同的表示形式,这至少强烈暗示相同的大小。

sizeof(char *) == sizeof(size_t) 绝对不能依赖——我知道它是错误的实现(虽然它们可能不完全符合标准,这不是他们的问题之一)。

关于c++ - 编写跨平台代码时使用 char* 而不是 void* 有什么陷阱吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com