gpt4 book ai didi

C#数据分配问题

转载 作者:行者123 更新时间:2023-11-28 08:33:50 27 4
gpt4 key购买 nike

我有以下问题。我有一个 C++ dll,包含函数

void cpp_send (void *data_, size_t size_, free_fn *ffn_)
{
//sends data
}

然后我有一个类的 C# dll

public class CS_dll : IDisposable
{
void cs_send (void *data)
{
IntPtr ptr = Marshal.AllocHGlobal (data.Length);
Marshal.Copy (data, 0, ptr, data.Length);
try
{
cpp_send (ptr,
Convert.ToUInt32 (data.Length), Free);
}
catch
{
Free (ptr);
}
}

//函数Free()看起来是这样的:

public static void Free (IntPtr ptr)
{
Marshal.FreeHGlobal (ptr);
}

我从 C# 应用程序中调用它作为

CS_dll w = new CS_dll();
byte [] msg = new byte [msg_size];
w.cs_send (msg, msg_size);

问题是,一段时间后,C# 应用程序因 SystemAccessViolationExcetpion 而崩溃。您知道问题出在哪里吗?

更清楚一点:C# 应用程序可以完成某些类型的输入,而其他类型的输入会崩溃,所以我不认为调用约定有问题,是吗?

最佳答案

您要向一个只接收 3 个参数的函数发送 5 个参数?

编辑:感谢您修复代码。您说某些类型的数据失败了。能说说是什么类型吗?

关于C#数据分配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618450/

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