gpt4 book ai didi

c++ - 如何在 C++ 原生 dll 中同时返回整数和 char * 变量?

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:34 24 4
gpt4 key购买 nike

我试图在 Windows 的 Visual Studio 中构建一个可以返回 intchar * 的 dll,但是它发生了内存泄漏,我为其他人构建了这个 dll语言,当然,在今天的个人电脑中,内存非常大,我可以完全忽略这个错误,但我想我会尽力而为。如何解决这个问题?我不熟悉C++,我看过很多网页检查如何构建一个dll。我希望将来解决此问题后可以返回多个 char *,有什么建议吗?

int   __stdcall  postsbinv(char ** retstring)
{
std::wstring wstrinvnum = L"1215265152";
size_t outputSize = wstrinvnum.length() + 1; // +1 for null terminator
char * retinvnumtemp = new char[outputSize];//memory leaks
size_t charsConverted = 0;
const wchar_t * wchar_invnum = wstrinvnum.c_str();
wcstombs_s(&charsConverted, retinvnumtemp, outputSize, wchar_invnum, wstrinvnum.length());//convert the utf-16 to ascii
*retstring = retinvnumtemp;//point to the char *
return 0;
}

PS:其他语言使用,我用的是char *

最佳答案

如果您使用 new 分配内存,您需要使用 delete 释放它,如果调用者使用另一种语言,这将是一个问题。

所以你需要提供第二个函数来释放内存。

int __stdcall postsbinv(char** retstring)
{
*retstring = new char[outputSize];
}

void __stdcall free_sbinv(char** retstring)
{
if (*retstring)
delete[] *retstring;
}

关于c++ - 如何在 C++ 原生 dll 中同时返回整数和 char * 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31237736/

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