我知道 C++ 中的空类的大小为 1 个字节。但是,我注意到 sizeof() 为此类的对象返回 0(在 g++ 中):
class Boom{
int n[0];
}
我可以打印 Boom 对象的有效内存位置:
Boom b;
cout<<&b;
这个特定的内存位置是否被占用? 如果我稍后在程序中分配内存,是否有可能使用这个位置?
最佳答案
数组的大小不能为零。如果您的编译器允许您声明一个,则该语言不会指定它的行为方式。
在这种情况下,使用这个编译器,确实允许两个对象占用相同的位置:
Boom b[2];
std::cout << &b[0] << ' ' << &b[1] << std::endl;
// Output: 0x7fffffb23fdc 0x7fffffb23fdc
但其他编译器的行为可能不同,或者只是拒绝无效声明(如 GCC 在您指定 -pedantic -Werror
时所做的那样)。
关于c++ - 大小为 0 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21879691/