gpt4 book ai didi

c# - C# 中的指针数学

转载 作者:行者123 更新时间:2023-11-30 22:51:03 25 4
gpt4 key购买 nike

我正在尝试使用一些 pinvoke 代码来调用 C 函数。该函数用数据填充缓冲区。

该结构设置为 DWORD 长度,后跟一个字符串。如何从 IntPtr 中提取字符串?

 IntPtr buffer = Marshal.AllocHGlobal(nRequiredSize);
PInvokedFunction(buffer, nRequiredSize);
string s = Marshal.PtrToStringAuto(buffer + 4); //this is an error.
Marshal.FreeHGlobal(buffer);

最佳答案

你应该这样做:

IntPtr sBuffer = new IntPtr( buffer.ToInt64() + 4 );
string s = Marshal.PtrToStringAuto( sBuffer );

所以你的代码是 64 位安全的。

关于c# - C# 中的指针数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215624/

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