社区
C语言
帖子详情
请问空struct结构为何还占用一个byte?
街角咖啡
2001-12-08 09:26:54
我建立一个空struct结构
struct test{};
然后在main中用sizeof(test)得到的是一个byte,请问为何有一个字节,这个字节用来做什么的?
...全文
131
5
打赏
收藏
请问空struct结构为何还占用一个byte?
我建立一个空struct结构 struct test{}; 然后在main中用sizeof(test)得到的是一个byte,请问为何有一个字节,这个字节用来做什么的?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sword_Sharp
2001-12-08
打赏
举报
回复
收藏
ttzzgg_80713
2001-12-08
打赏
举报
回复
指针
longzhifang
2001-12-08
打赏
举报
回复
<Inside C++ object modal>里这个讲的很清楚
zminhao
2001-12-08
打赏
举报
回复
同意楼上的
Kylin_Li
2001-12-08
打赏
举报
回复
对于这样的空的test,一般的编译器给"偷偷"的插入一个byte,目的是用来使这个struct的object在内存中有个位置.这样的话,两个不同的object就会有不同的地址.
比如test a,b;
那么&a != &b.
USB HID介绍
USB HID介绍 对于USB HID初学者有所帮忙
luago:golang实现卢阿
由创建 实现Lua虚拟机,编译器和标准库 Lua虚拟机和API 二进制Chunk 整体
结构
binary_Chunk的整体
结构
如下 type binaryChunk
struct
{ header // 头部信息,加载时用于校验版本号,大小端格式 sizeUpvalues
byte
// upvalue的大小 mainFunc * Prototype // 函数原型 } 标头 头部总共
占用
约30个字节,具体的内容如下: type header
struct
{ // signature:签名。二进制文件的固定魔数,Lua二进制chunk的固定魔数是0x1B4C7561,写成Go语言字符串字面量为\x1bLua signature [ 4 ]
byte
// version:版本号。用于虚拟机加载二进制Chunk时的检查,计算方式是大版本号*16
计算
一个
struct
占用
的内存字节数
本文目的 本文将通过简单的例子来说明如何去计算c/c++中
struct
占用
的内存字节数。 正文 假设当前机器环境为64位的,考虑以下的
struct
占用
字节数大小。
struct
test { char a; int b; short c; void* d; }; 可能有不熟悉的同学直接对
struct
里的成员
占用
内存数进行相加:char占1,int占4,short占2,void* 占8,最后得到结果为15。 这个结果是对的吗?很明显是错误的,因为
struct
内部的各个成员实际上会进行
数据
结构
占用
存储
空
间——
struct
Struct
结构
体的内存
空
间
占用
结构
体字节对齐在计算机中,数据存储和传输通常是以bit为单位,8个bit组成
一个
字节(
byte
).因此,在32位系统中,计算机的字长为32位,即4个字节;64位系统中,计算机的字长为64位,即8个字节。计算机系统在内存管理时,会遵循内存对齐的规则,也就是说, 在32位系统中,遵循4字节对齐,按4个字节为单位分配存储
空
间,如果不足,会自动补充,如果剩余的
空
间不足以存放
struct
{}
空
结构
体
背景 原理解密 定义的各种姿势 `
struct
{}` 作为 receiver 配合使用姿势 `map` & `
struct
{}` `chan` & `
struct
{}` `slice` & `
struct
{}` 总结 背景 golang 正常的
struct
就是普通的
一个
内存块,必定是
占用
一小块内存的,并且
结构
体的大小是要经过边界,长度的对齐的,但是“
空
结构
体”是不占内存的,size 为 0; 提示:以下都是基于 go1.13.3 linux/amd64 分
C语言
70,021
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章