什么等于c#中的c ++ size_t
我在c ++中有一个结构:
struct some_struct{ uchar* data; size_t size; }
我想在manged(c#)和native(c ++)之间传递它。 C#中size_t
的等价物是什么?
PS我需要一个完全匹配的大小,因为任何字节差异将导致包装时的巨大问题
编辑:
本机和manged代码都在我的完全控制之下(我可以编辑我想要的任何内容)
没有C#等同于size_t
。
无论平台如何, C# sizeof()
运算符总是返回一个int
值,所以从技术上讲, size_t
的C#等价物是int
,但这对你没有帮助。
(注意Marshal.SizeOf()
也返回一个int
。)
另请注意,就sizeof()
和Marshal.Sizeof()
而言,没有C#对象的大小可以大于2GB。 数组可以大于2GB,但不能将sizeof()
或Marshal.SizeOf()
与数组一起使用。
为了您的目的,您需要知道DLL中的代码版本用于size_t
并在C#中使用适当的大小整数类型。
要实现的一件重要事情是,在C / C ++中, size_t
通常与intptr_t
具有相同的位数,但这不能保证,特别是对于分段体系结构。
我知道很多人说“使用UIntPtr
”,这通常会起作用,但并不保证是正确的。
从size_t
, size_t
的C / C ++定义
是sizeof运算符的结果的无符号整数类型;
C#中size_t的最佳等价物是UIntPtr类型。 它在32位平台上是32位,在64位平台上是64位,而且是无符号的。
上述就是C#学习教程:什么等于c#中的c ++ size_t分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012063.html