为什么
SDL_RWFromConstMem()
size 需要 int 类型而不是 unsigned int 类型?
我有一个保存数据的
std::vector
。 vector.size()
无法返回小于 0 的值。
是否有可能数据大小小于0?
即使值不能为负数,也并不一定意味着您应该使用无符号类型。它们的主要好处是能够存储更大的正值,但缺点是某些算术运算符的行为不直观。因此,一些程序员会尽可能避免使用无符号类型。
真正的问题不是它不是
unsigned it
,问题是它在 64 位平台上不是 64 位宽,在 64 位平台上您实际上可以拥有超过 2GB 或 4GB 的内存块(如 32 位 int
所示)分别为
和 unsigned int
)。
修复方法是使用
size_t
或其签名对应项 (ptrdiff_t
)。
他们似乎在 SDL3 中确实做到了这一点:https://wiki.libsdl.org/SDL3/SDL_IOFromConstMem(尚未发布)。