社区
C语言
帖子详情
struct 大小?
clockwise3
2004-11-21 11:43:01
typedef struct
{
double dx;
char cx;
}
test;
int main(int argc, char* argv[])
{
int i = sizeof(test);
return 0;
}
执行后i值不是12 却是16,何解?
...全文
94
5
打赏
收藏
struct 大小?
typedef struct { double dx; char cx; } test; int main(int argc, char* argv[]) { int i = sizeof(test); return 0; } 执行后i值不是12 却是16,何解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
greenteanet
2004-11-21
打赏
举报
回复
其实楼主的问题是内存对齐问题,您可以到http://dev.csdn.net/article/article/48/48195.shtm看看,里面详细讲了为什么会出现内存对齐。
ice_lover
2004-11-21
打赏
举报
回复
与编译器有关,要内存补齐,按楼主给出的补齐结果应为12。但整个struct的大小应为结构中size最大元素的倍数,所以再补4结果为16
zwzzj
2004-11-21
打赏
举报
回复
应该与编译器有关.
ma100
2004-11-21
打赏
举报
回复
在搜索中查询 内存对齐
clockwise3
2004-11-21
打赏
举报
回复
不过如果写成
typedef struct
{
char cx;
double dx;
}
test;
int main(int argc, char* argv[])
{
int i = sizeof(test);
return 0;
}
执行后i值是12了 怎么用内存对齐解释呢?
struct
结构体
大小
计算
struct
结构体
大小
计算 计算结构体
大小
需要分为两步: 一、确定内存对齐单位 (1)CPU周期 WIN vs qt 默认8字节对齐 Linux 32位 默认4字节对齐,64位默认8字节对齐 (2)结构体最大成员(基本数据类型变量) (3)预编译指令#pragma pack(n)手动设置 n–只能填1 2 4 8 上面三者取最小的,就是实际对齐单位(这里的“实际对齐单位”是我为了方便...
怎么计算
struct
结构所占空间?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunXiWang/article/details/78718774 C语言结构体
struct
所占空间的计算一直是公司笔试题中的热点。 我们来看一下每种情况下的结构体的
大小
: 一、结构体成员是基本类型 总体上遵循两个原则: ...
mm_
struct
简介
一、什么是mm_
struct
??? 内存描述符也用一个结构体表示,这个结构体的名字叫做mm_
struct
(内存描述符),linux就是通过mm_
struct
这个结构体来实现内存管理。 一个进程的虚拟地址空间主要由两个数据结构来描述,一个是最高层次的mm_
struct
,一个是较高层次的vm_ares_
struct
。最高层次的mm_
struct
结构描述了一个进程的整个虚拟地址空间。较高层次的结
计算
struct
的
大小
结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的
大小
不是所有成员
大小
简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题.
struct
stu1 { int i; char c; int j; }先介绍一个相关的概念——偏移量。偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体
大小
等于最后一个成员的
C++,
struct
大小
的问题
利用sizeof计算
struct
的
大小
的时候,要考虑内存对齐
C语言
69,375
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章