书籍中发现的新观点引发思考 #生活乐趣# #读书乐趣# #学术研究#
最新推荐文章于 2024-09-26 19:46:03 发布

qq_38234381 于 2021-10-11 23:02:00 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一.LayoutKind:控制导出为非托管内存中的对象时对象在内存中的布局
三张类型:
1.Auto:运行时会自动为非托管内存中的对象成员选择适当的布局,不能用在托管代码中,否则会导致异常
2.Explicit:精确布局,需要用FieldOffset()设置每个成员的位置,这样就可以实现类似c的公用体的功能
[StructLayout(LayoutKind.Explicit)] struct S1 { [FieldOffset(0)] int a; [FieldOffset(0)] int b; } 12345678
这样a和b在内存中地址相同
3.Sequential:结构体中变量的顺序是怎么写的,内存中变量的顺序就是什么样的
二.CharSet:设置托管字符串成员封装为非托管字符串使用的字符集
由于存在多个非托管字符串类型而只有一个托管字符串类型,因此必须使用字符集指定托管字符串应如何封送到非托管代码
具体成员及其作用见:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.charset?view=net-5.0
三.Pack:手动设置结构体的对齐方式(按照多少字节)
关于结构体的对齐方式见:https://www.cnblogs.com/tianzeng/p/9038395.html
网址:[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]引发的思考 https://www.yuejiaxmz.com/news/view/829299
相关内容
关于[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] 的解释[StructLayout(LayoutKind.Sequential, Pack =1)]解释C#调用C/C++dll的方法(近期研究的课题)创建表时附带的ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE = utf8PACK北极熊沙发入驻水裹·汤泉生活 健康美学生活空间轻奢升级tkinter学习——标签pack方法:ipadx/ipady参数以及anchor参数幼儿整理抽屉引发的思考新能源汽车方向锂离子电池系统pack设计过程的研究对工业风引领室内设计新风标的思考由一根香蕉引发的对于艺术与生活的思考
随便看看