首页 > 其他分享 >空 struct 占用大小

空 struct 占用大小

时间:2023-02-06 16:47:46浏览次数:50  
标签:count struct 占用 C++ char 大小 array

问题

今天在写头文件的时候,定义一个通讯协议使用的 struct,为了协议整体的一致性,在内部嵌套了一个空的 struct,按照以往用 c 写的通讯协议,这样是没什么问题的。结果在计算大小的时候,发现在 c++ 中这个空 struct 占用了一个字节。

解答

经过网上搜索之后,发现是因为 c++ 有规定: C++语言标准中规定了这样一个原则:“no object shall have the same address in memory as any other variable”。
应该是为了防止 除0 异常。 比如:

T array[5];
int count = &array[4] - &array[0];  // 等价于 count = ((char *)&array[4] - (char *)&array[0]) / sizeof T;

参考:

C++中的空类与空结构体大小
https://www.cnblogs.com/kuliuheng/p/4104213.html

标签:count,struct,占用,C++,char,大小,array
From: https://www.cnblogs.com/ramlife/p/17095845.html

相关文章