C# 为什么 sizeof 不安全以及如何以安全的方式获取结构体的大小?

2023-11-21

我定义了一个通过套接字发送的结构。我想知道它的大小,但是sizeof是不安全的,对于“System.Runtime.InteropServices.MarshalSizeOf”。有没有办法以安全的方式获取它的大小?


对于托管结构没有办法做到这一点。Marshal.SizeOf只会返回组成结构的封送类型的数据大小...MIGHT对于某些平台上的托管类型是正确的,但在其他平台上则不然。

这是设计使然,因此 JIT 可以根据其运行的平台以不同的方式放置结构。

更多信息请点击这里:克里斯·布鲁姆的博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 为什么 sizeof 不安全以及如何以安全的方式获取结构体的大小? 的相关文章

  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • C++ 返回值、引用、const 引用

    你能向我解释一下返回值 值引用和值常量引用之间的区别吗 Value Vector2D operator const Vector2D vector this gt x vector x this gt y vector y return t
  • 使用 C++ 拆分“[常规设置]”格式的节字符串

    我是 C 新手 我想读取包含部分和键值对的 ini 文件 根据部分 我想读取相应键的值 首先 我想阅读方括号内的部分 请帮忙 谢谢 对于真正的 INI 文件解析 我强烈建议iniparser库 http ndevilla free fr i
  • 如何在线程创建和退出时调用函数?

    include
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • C++:将模板参数的模板类型成员添加为好友的正确语法?

    我有一个带有模板类型参数 tTRAIT 的类 我想加一个模板为好友type member aliastTRAIT 但我无法弄清楚语法 这可能吗 template
  • 在不使用 ncurses 的情况下用 C/C++ 编写“真正的”交互式终端程序,例如 vim、htop...

    不 我不想使用ncurses 因为我想了解如何 终端可以工作 并且我自己编程也很有趣 没有 必须是可移植的 它必须只能在基于 linux xterm 的终端仿真器上工作 我想做的是编写一个交互式终端应用程序 例如 htop 和 vim 我的
  • 使用 size_t 值反向遍历向量

    我想以相反的方向遍历向量的值 如您所知 向量的大小为 size t 当我使用以下代码时 for size t r m size 1 r gt 0 r x r f r for size t c r 1 c lt m size c x r m
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 函数参数评估顺序[重复]

    这个问题在这里已经有答案了 在 C 和 C 中 函数参数的求值是否有固定的顺序 我的意思是 标准怎么说 是吗left to right or right to left 我从书中得到的信息令人困惑 是否有必要function call应该使
  • 按值返回的函数的返回语句中的初始化

    我的问题源于深入研究std move in return语句 例如以下示例 struct A A std cout lt lt Constructed lt lt this lt lt std endl A A noexcept std c
  • 只读有运行时开销吗?

    出于某种原因 我一直认为readonly字段有与其相关的开销 我认为这是 CLR 跟踪是否存在readonly字段是否已初始化 这里的开销是一些额外的内存使用量 用于跟踪状态以及分配值时的检查 也许我这么认为是因为我不知道readonly字
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • EWS - 给予预约,获取预约的所有者副本

    在 EWS 中进行预约后 是否可以获得所有者的副本 例如 如果我登录为user1 我有user1创建的约会的副本user2 我有冒充权 我要编辑user2预约的副本 我怎样才能获得user2 s copy 您可以使用 PidLidClean
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 清理堆分配对象的良好实践或约定?

    我正在学习C 我有 C C ObjC 背景 相当高级的语言 在 C 或 ObjC 上 作为函数或方法的结果返回堆分配的对象是很简单的 因为对象的清理是受管理的 按照惯例 会在适当的时候销毁 但我不知道在 C 中应该如何处理这个问题 例如 s
  • 从 STL 列表中删除项目

    我想创建一个函数 如果符合特定条件 则将项目从一个 STL 列表移动到另一个列表 这段代码不是这样做的方法 迭代器很可能会被擦除 函数失效并导致问题 for std list
  • 如何在用户空间程序中使用内核 libcrc32c (或相同的函数)?

    我想在我自己的用户空间程序中进行一些 CRC 检查 我发现内核加密库已经在系统中 并且支持 SSE4 2 我尝试直接 include

随机推荐

  • 未找到 Conda 命令

    我已经安装了迷你康达并添加了环境变量export PATH home username miniconda3 bin PATH to my bashrc and bash 配置文件 但仍然无法在我的终端中运行任何 Conda 命令 我的设置
  • 使用冒泡排序对 int 数组进行排序

    为什么我打印出来的数组没有在下面的代码中排序 public class BubbleSort public void sortArray int x go through the array and sort from smallest t
  • 如何使用 C# 构建软件电话(使用 SIP 协议)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我面临的挑战是使用 C 或 net 技术构建 sip 软电话 请指导我构建此类所需的技术 要求和规范 可能的要求 支持的编解码器 G 722 1 G 723 1 G 726 G
  • TF10175:团队项目不存在

    我使用 Visualstudio Online 作为存储库 我从项目集合中删除了 ProjectName 项目 之后我只在一台计算机上出现错误 TF10175 ProjectName 团队项目不存在 有解决这个问题的想法吗 我通过删除我的工
  • Unity应用程序块,如何将参数传递给注入工厂?

    这是我现在拥有的 Container RegisterType
  • 何时在 C++ 中使用 void*

    我正在努力思考一个问题void 我应该了解什么是正确的使用方式以及是否存在任何潜在的滥用行为 意思是很酷的东西 没有错 我不明白如何以及为什么使用void 如果我理解的话 我需要将当前指针转换为void 然后当我想使用它时又投射回原来的 为
  • 在大文件中查找和替换

    我想在一个大的 xml 文件中找到一段文本 并想用其他文本替换 文件大小约为 50GB 我想在命令行中执行此操作 我正在查看 PowerShell 想知道它是否可以处理大尺寸 目前我正在尝试这样的事情 但它不喜欢它 Get Content
  • Libgdx |场景2d |设置表格的背景颜色?

    我正在创建一个菜单 就像 flappybird 中的菜单一样 当你死时它会在播放屏幕上弹出 我创建了一个扩展表格的类 我想将表格的背景设置为白色 有没有办法做到这一点 你可以这样做 Pixmap bgPixmap new Pixmap 1
  • 如何使用javascript删除CSS属性?

    是否可以使用 JavaScript 删除元素的 CSS 属性 例如我有div style zoom 1 2 现在我想通过 JavaScript 删除缩放属性 您有两个选择 选项1 您可以使用移除属性方法 它将从元素中删除样式 el styl
  • Haskell:获取表达式的静态类型

    我正在寻找一个可以完成 GHCi type 命令的功能的函数 理想情况下 它会有一个类似的签名 getStaticType a gt String a getStaticType 1 2 a Num t gt t b getStaticTy
  • 子句之间的多个 MySql WHERE

    MySql 新手程序员感谢您的耐心等待 我试图跟踪满足 3 个不同条件的表中的 ID 号 这就是我所得到的 但是查询不会返回表中明确匹配的任何结果 想法 SELECT FROM table WHERE x BETWEEN 80 AND 20
  • 仅底角或顶角为圆角的 ImageView

    我对这个问题有答案 但我花了太多时间寻找它 这就是我创建这个问题的原因 这样对其他人来说会更容易 您不能像通常的视图一样使用形状 drawable 来圆化图像角 这就是为什么您需要对代码内的图像进行一些更改 这是使用材料设计来做到这一点的另
  • 使用 nbconvert 从 Jupyter Notebook 中删除单元格

    中提到的建议如何在 IPython Notebook 中隐藏一个特定单元格 输入或输出 不工作 在 Windows 上我执行以下操作 jupyter nbconvert a ipynb TagRemovePreprocessor remov
  • Android VideoView - 如何按顺序播放视频

    我正在尝试开发一款 Android 应用程序 可以在一个视频视图中播放多个视频 当一个完成后 第二个必须开始 依此类推 我的视频存储在项目的 raw 文件夹中 为了获取他们的文件名 我这样做 Field fields R raw class
  • 当 VS 解决方案中的目标失败时,如何使 msbuild 失败?

    我在命令行上使用 msbuild 来构建包含 C 项目的 VS2012 解决方案 该项目有一个在构建后运行的目标
  • 如何使用终端调用jar文件中的方法?

    我在 jar 文件中有一个已编译的项目 我需要从中调用一个方法 如何在 ubuntu 终端中执行此操作 您不能从任何类的终端或 cmd 调用任何方法 您可以通过终端执行课程 If your jar是可执行的尝试 java jar Name
  • Android ContentProvider读写权限

    权限似乎没有任何区别 在清单中 我只有一个
  • Field...Room 持久性库的 getter 不明确

    我有以下实体 public class User PrimaryKey private final long id private String id private String userName private String email
  • Symfony2 - 在实体构造函数中设置默认值

    我可以设置一个简单的默认值 例如字符串或布尔值 但我找不到如何设置实体的默认值 在我的 User php 实体中 ORM ManyToOne targetEntity Acme DemoBundle Entity Foo protected
  • C# 为什么 sizeof 不安全以及如何以安全的方式获取结构体的大小?

    我定义了一个通过套接字发送的结构 我想知道它的大小 但是sizeof是不安全的 对于 System Runtime InteropServices MarshalSizeOf 有没有办法以安全的方式获取它的大小 对于托管结构没有办法做到这一