我有一个从 C# 代码调用的 C++ dll。dll 接受几个参数并返回一个 int ..
C++ 代码。
extern "C" __declspec(dllexport) int DoSomething(char* input1, char* buffer)
{
gss_buffer_desc token;
std::string encodedTokenStr = base64_encode((unsigned char *)token.value, token.length).c_str();
std::copy(encodedTokenStr.begin(), encodedTokenStr.end(), buffer);
return value;
}
C#
public sealed class MyClass
{
public int DoSomething(string input1, out StringBuilder buffer)
{
buffer = new StringBuilder(10000);
return DoSomething(input1, buffer)
}
[DllImport("mycppcode.dll")]
private static extern int DoSomething(string input1, StringBuilder buffer)
}
有时我看到这个应用程序正在使用大量内存,我首先想到的是内存泄漏。垃圾收集器是否处理在 C++ 代码中初始化的所有对象?C++ 代码是否会为字符串生成器(“缓冲区”)初始化一些内存,即使它是在 C# 中初始化的。我无法在 C++ 中处理它,因为我需要从字符串生成器收集数据。
我从未在 C++ 上工作过,但我看到在 C++ dll 中声明的一些对象正在被清除。
我在调用 C++ 代码的方式上可能做错了什么。这个字符串生成器会导致内存泄漏吗?