【发布时间】:2010-09-22 15:19:25
【问题描述】:
导致 sizeof() 为 32 的字符串结构中的开销是什么?
【问题讨论】:
-
如果您打开平台的
<string>标头,您可以确切地看到为什么std::string是那个大小。 @Queso:sizeof产生对象的大小以字节为单位。 -
如果 sizeof 返回指针中的位数,那么您的编译器已损坏
-
@Martin:因为“湿度”几乎被定义为水(或任何液体)的属性。我不知道“32”被定义为字符串的大小。
-
@Steve Jessop:由于当前的实施,水是湿的(地球作为 STP 允许水变成液体)。在其他实现中,它不是湿的(就像木星一样,它是一种气体)。所以这个字符串实现是 32,因为这是它在这个实现中的构建方式,在其他实现中它将是 16,在另一个实现中是 64。字符串的大小(如水)取决于它所使用的环境。
-
好的,由于地球的 STP,水是液态的,我们可以通过查看影响它的因素来进一步钻探(例如,大气压力受质量和气体排放的影响)。那么问为什么一组实施者选择32,另一组选择64,与问为什么地球有一定的表面压力和温度有什么关系?一种是众生的选择。另一个不是 IMO,但即使是 IYO,我认为 C++ 实现者也不会像上帝那样声称不可言喻。