gpt4 book ai didi

c# - 什么等于 c# 中的 c++ size_t

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:06 26 4
gpt4 key购买 nike

我在 C++ 中有一个结构:

struct some_struct{
uchar* data;
size_t size;
}

我想在manged(c#) 和native(c++) 之间传递它。 C# 中的 size_t 是什么?

附言我需要大小完全匹配,因为任何字节差异都会在包装时导致巨大的问题

编辑:

原生代码和托管代码都在我的完全控制之下(我可以随意编辑)

最佳答案

没有与 size_t 等效的 C#。

C# sizeof() operator无论平台如何,总是返回一个 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”,这通常会起作用,但不能保证是正确的。


来自C/C++ definition of size_t , size_t

is the unsigned integer type of the result of the sizeof operator;

关于c# - 什么等于 c# 中的 c++ size_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32906774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com