0
点赞
收藏
分享

微信扫一扫

空结构体有多大?


C语言

#include<stdio.h>

struct Data {};

int main() {
printf("%ld\n", sizeof(struct Data));
return 0;
}

  • Windows:C文件不允许定义空的struct
  • Linux/Unix:大小为0

C++

#include<iostream>

using namespace std;

struct Data {};

int main() {
cout << sizeof(Data) << endl;
return 0;
}

  • Windows/Linux/Unix:大小为1

在C语言中struct叫结构体变量,只需要内存即可,所以大小可以为0

而在C++中,struct不叫变量,而叫对象,不仅需要内存,还需要构造。构造时需要有一个this指针指向对象的地址,如果对象大小为0,就无法让this指针指向,所以空对象的大小为最小的内存单位1个字节。如果说有更小的类型能表示一个bit,那空对象也可以是1bit


举报

相关推荐

0 条评论