相关疑难解决方法(0)

C++:空类对象的大小是多少?

我想知道一个空类的对象大小.它肯定不能是0字节,因为它应该可以像任何其他对象一样引用和指向它.但是,这样的对象有多大?

我用过这个小程序:

#include <iostream>
using namespace std;

class Empty {};

int main()
{
    Empty e;
    cerr << sizeof(e) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在Visual C++和Cygwin-g ++编译器上得到的输出是1个字节!这对我来说有点令人惊讶,因为我期望它的机器字大小(32位或4字节).

任何人都可以解释为什么 1字节的大小?为什么不是 4个字节?这是依赖于编译器还是机器?此外,有人可以给出一个更有说服力的理由,说明为什么空类对象的大小不是 0字节?

c++ class object

105
推荐指数
5
解决办法
6万
查看次数

在C练习中使用灵活的阵列成员?

我最近读到在C中使用灵活的阵列成员是糟糕的软件工程实践.但是,该声明没有任何论据支持.这是公认的事实吗?

(灵活的数组成员是C99中引入的C特性,其中可以将最后一个元素声明为未指定大小的数组.例如:)

struct header {
    size_t len;
    unsigned char data[];
};
Run Code Online (Sandbox Code Playgroud)

c arrays data-structures flexible-array-member

71
推荐指数
7
解决办法
6万
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

class ×1

data-structures ×1

flexible-array-member ×1

object ×1