这个结构体数组在内存中占用多少个字节_已解决
本帖最后由 涛4091 于 2023-2-23 11:02 编辑请问:这样一个int是占用2个字节吗?一个char也是2个字节和float也是两个吗? 用 sizeof + 结构体名称实测啊。 jackz007 发表于 2022-6-30 20:50
用 sizeof + 结构体名称实测啊。
查了,是4个字节。int型是从:000000000062FE10、000000000062FE11、000000000062FE12、000000000062FE13.
只有后面4个二进制位变了,应该是半个字节。怎么算的4字节呢 结构体内存占用有专门的教程。
通常来说是以占用最大内存的类型为准来对齐,比如你int占4个字节,后面的类型都比4个字节小,则以4个字节为准来对齐。如你这就应该是占12个字节
参考:
https://www.jb51.net/article/207082.htm
涛4091 发表于 2022-6-30 20:59
查了,是4个字节。int型是从:000000000062FE10、000000000062FE11、000000000062FE12、000000000062FE13 ...
1.结构体数组大小就是 结构体大小 * 元素个数
2.想知道结构体大小直接输出 sizeof(struct Student),不要想当然的以为是 int + char + float 的大小,因为内存对齐的缘故,实际结构体可能会比这三个类型加起来要大
3.sizeof得到的数值单位就是字节,你这列出4个地址是如何得来的? {:5_102:} {:7_146:} sizeof(struct Student) 学习了{:10_256:} {:10_256:}{:10_256:}{:10_256:}{:10_256:} sizeof(struct Student) {:5_109:} 如果没错的话,楼主的4个字节是boy1指针的大小占用4字节,输出的是boy1的首地址和boy1的下一个元素的首地址 int类型占4字节吧 {:10_256:} 风车呼呼呼 发表于 2022-6-30 22:00
1.结构体数组大小就是 结构体大小 * 元素个数
2.想知道结构体大小直接输出 sizeof(struct Student),不 ...
你好,我想说的是1个字节等于8位,就是0000,0000 .
但是内存中只改变了4位,就是半个字节。
程序中一个int是4个字节,但我算的是2个字节 ba21 发表于 2022-6-30 21:36
结构体内存占用有专门的教程。
通常来说是以占用最大内存的类型为准来对齐,比如你int占4个字节,后面的类 ...
你好,一个int占用4个字节,一个字节8位。但是查看地址发现只占用了两个字节就是0000000062FE10 、0000000062FE11 、0000000062FE12 、0000000062FE13 int 是4
char 是4(1格式对齐成4)
float是4
总共16(12格式对齐成16) 涛4091 发表于 2022-7-1 20:10
你好,我想说的是1个字节等于8位,就是0000,0000 .
但是内存中只改变了4位,就是半个字节。
程序中一 ...
x86是int2字节(16bit)
x64是int4字节(32bit) 涛4091 发表于 2022-7-1 20:13
你好,一个int占用4个字节,一个字节8位。但是查看地址发现只占用了两个字节就是0000000062FE10 、000000 ...
这跟你使用的软、硬件平台挂钩。
32位平台 int 不就是4个字节? 32位/8位= 4
16位平台 int 不就是2个字节? 16位/8位 =2
页:
[1]
2