【发布时间】:2018-02-12 17:11:19
【问题描述】:
具体来说,这是在讨论中提出的:
内存消耗明智,是否有可能使用两个
ints 中的struct比仅使用两个ints 占用更多内存?
或者,在语言方面:
#include <iostream>
struct S { int a, b; };
int main() {
std::cout << (sizeof(S) > sizeof(int) * 2 ? "bigger" : "the same") << std::endl;
}
是否有任何合理的1(不一定是常见的或当前的)环境可以让这个小程序打印bigger?
1澄清一下,我的意思是系统(和编译器)以某种有意义的数量开发和生产,而不是仅仅为了证明这一点而构建的理论示例,或者一次性原型或业余爱好者的创作。
【问题讨论】:
-
我打赌这适用于 32 位操作系统上的 Turbo C++。
-
@Bathsheba 试试这个值 15 分! :D
-
@BartekBanachewicz -- 语言定义间接指定了
INT_MAX(32767) 的最小值和INT_MIN(-32767) 的最大值。int必须至少为 16 位宽。 -
如果对齐但编译器在末尾引入了填充怎么办?
-
@Bathsheba:我刚刚在 Turbo C++ 中测试过,大小是一样的。