gpt4 book ai didi

c# - C# 使用的 native C++ 库的内存分配器

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

我正在编写一些需要从 C# 调用的 native C++ 代码(我无法用 C# 代码替换 C++ native 代码)。

我在使用 malloc/free 在 native C++ 代码中分配/取消分配一些内存时发现内存损坏。然后我用了 LocalAlloc/LocalFree 和 HeapAlloc/HeapFree 也遇到了同样的问题。

分配/解除分配似乎是正确的,它们发生在由 native 代码创建的单独线程中。

我想知道在 C# 调用的 native C++ 库中使用哪种分配策略最好

编辑: 发现了问题:问题不在分配/解除分配代码中,而是在解除分配后写入的某些内存中。

最佳答案

只要代码的 C# 端使用编译器的 /unsafe 开关和用于保存数据缓冲区的 fixed 关键字,我想你应该没问题.

至于你的内存分配问题,它可能不是导致问题的 C++ 内存分配代码,它可能是 C++ 代码与驱动程序交互的方式......可能使用 VirtualAlloc /VirtualFree 对根据 MSDN文档...

编辑:当您在与驱动程序交互后尝试分配缓冲区以保存来自 C++ 端的数据时...可能是竞争条件或中断延迟导致内存损坏。 .只是一个想法...

希望对您有所帮助,此致,汤姆。

关于c# - C# 使用的 native C++ 库的内存分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171996/

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