为什么 SDL_RWFromConstMem() 大小需要 int 类型而不是 unsigned int 类型?

问题描述 投票:0回答:1

为什么

SDL_RWFromConstMem()
size 需要 int 类型而不是 unsigned int 类型?

我有一个保存数据的

std::vector
vector.size()
无法返回小于 0 的值。

是否有可能数据大小小于0?

c++ sdl-2
1个回答
0
投票

即使值不能为负数,也并不一定意味着您应该使用无符号类型。它们的主要好处是能够存储更大的正值,但缺点是某些算术运算符的行为不直观。因此,一些程序员会尽可能避免使用无符号类型。

真正的问题不是它不是

unsigned it
,问题是它在 64 位平台上不是 64 位宽,在 64 位平台上您实际上可以拥有超过 2GB 或 4GB 的内存块(如 32 位
int 所示)分别为 
unsigned int
)。

修复方法是使用

size_t
或其带符号的对应项 (
ptrdiff_t
)。

他们似乎在 SDL3 中确实做到了这一点:https://wiki.libsdl.org/SDL3/SDL_IOFromConstMem(尚未发布)。

© www.soinside.com 2019 - 2024. All rights reserved.