c++ - 大小为 0 的对象

标签 c++

我知道 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/

相关文章:

c++ - Visual C++ 2013 - Windows XP Sp1 C 程序不工作 - 空白命令行

javascript - 将输入数据发送到 node.js 中的子进程

c++ - gdb 中未解析的调试符号

c++ - 使用 qt 和 opengl 显示图像,计时精度和 vsync 问题,c++

c++ - 如何使用 C++ 从 Internet 读取文本

c++ - 在 C/Unix 中监听 IP 子网的套接字

c++ - 一个指针,c++中的两个不同的类

c++ - 记录 boost::exception 同时避免文件/行/函数和唠叨

c++ - 将指针的地址作为参数传递

c++ - 如何使子类上的运算符返回子类类型?