Csharp/C#教程:什么等于c#中的c ++ size_t分享


什么等于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_tsize_t的C / C ++定义

是sizeof运算符的结果的无符号整数类型;

C#中size_t的最佳等价物是UIntPtr类型。 它在32位平台上是32位,在64位平台上是64位,而且是无符号的。

上述就是C#学习教程:什么等于c#中的c ++ size_t分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:什么等于c#中的c ++ size_t分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1012063.html

(0)
上一篇 2021年12月30日 上午12:38
下一篇 2021年12月30日 上午12:39

精彩推荐