永发信息网

如何计算结构体大小

答案:2  悬赏:30  手机版
解决时间 2021-03-17 10:06
如何计算结构体大小
最佳答案
计算这些结构体时,注意以下几点: 1)结构体成员如果类实例、数组,则其在结构体中保存的引用。 在32位模式下,每个引用占用4个字节(32位); 在64位模式下,每个引用占用8个字节(64位) 2)标准数据类型 short/ushort:2字节 int/int32/uint:4字节 DateTime: 8字节 ============ using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace ConsoleSizeOf{ [StructLayout (LayoutKind.Sequential,Pack =1)] struct ScheduleFile { public Int32 schedule_id; public byte[] basic_schedule_name; public Int32 table_count;//服务个数(表个数) public Table []table_list;//服务列表 DateTime t; } //结构体Table [StructLayout(LayoutKind.Sequential,Pack =1)] struct Table { public Int32 table_id; public Int32 trip_cnt; public Trip []trip_list; } //结构体Trip [StructLayout(LayoutKind.Sequential,Pack =1)] struct Trip//单程 { public byte[] local_sub_id; public byte[] global_sub_id; public ushort trip_flag; public ushort route_id; public ushort loop_id; public byte[] destination_code; public ushort record_cnt; public Record []record_list; } //结构体Record [StructLayout(LayoutKind.Sequential,Pack =1)] struct Record//记录 { public ushort station_id; public ushort platform_id; public DateTime arrival_time; public DateTime departure_time; public Int32 performance_level; public ushort record_flag; } class Program { static void Main(string[] args) { ScheduleFile sf = new ScheduleFile(); Console.WriteLine("SizeOf(ScheduleFile)={0}", Marshal.SizeOf(sf)); sf.basic_schedule_name = new byte[100]; Console.WriteLine("SizeOf(ScheduleFile)={0}, 数组basic_schedule_name已赋值!", Marshal.SizeOf(sf)); sf.table_list = new Table[100]; Console.WriteLine("SizeOf(ScheduleFile)={0}, 数组table_list已赋值!", Marshal.SizeOf(sf)); Table tb = new Table(); Console.WriteLine("SizeOf(Table)={0}", Marshal.SizeOf(tb)); Trip tp = new Trip(); Console.WriteLine("SizeOf(Trip)={0}", Marshal.SizeOf(tp)); Record rc = new Record(); Console.WriteLine("SizeOf(Trip)={0}", Marshal.SizeOf(rc)); } }}以下结果是在64位系统运行的结果 注意红色方框中的计算结果!
全部回答
用sizeof这个操作符来确定你的程序的话如下int size=sizeof(student);由于c语言会对自定义类型进行存储优化,可以实际大小比把结构体里的所有原子类型加起来要大,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
甚低频无线电信号一般可以传输多远?
给领导开车迟到了被当孙子骂怎么办?
海盐县百步镇居民委员会地址在什么地方,想过
吊篮提升机合格证书
战地2142下了单机补丁怎么还是玩不了?
请问一下电阻丝的电源。交流和直流都可以的
一只小蜜蜂的重量等于一个人的多少
很多鸡肉猪肉都是先炒后焖的吗?
广汽本田发动机是全铝无缸套的么
运输公司家属院地址在什么地方,想过去办事
支付宝电脑版可以查询到转账记录吗
几千块的表和百万的表差距在哪
动物是如何联络的?
什么是椎弓根附件断裂
方家屯出口(方家屯互通出口西向)我想知道这个
推荐资讯
我想问一个女生在感情中成熟的表现有哪些
咸宁师专美女包月
在手机上买火车票也要申请一个邮箱,注册—个
10万以下买什么车好 10万以下小车
b驾证可以开高速公路的洒水车
身有斑点形似像黄腊丁是什么鱼,但是它身体比
除去CO2气体中混有少量杂质SO2气体,最好选用
八大处公园有什么意思,这么多人去?
三峡大学水利水电专业怎么样
黑雾垭口我想知道这个在什么地方
EXO -Baby don't cry 中韩混合的mp3,谢
爱玩辅助的男生是什么心态
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?