我可以在函数调用之间在c++ DLL中维护内存吗?

Can I maintain memory in a c++ DLL between function calls?

本文关键字:维护 内存 DLL 函数调用 之间 c++ 我可以      更新时间:2023-10-16

所以,我正在为一个程序编写一个插件,它需要两个大量的数据传递给它。它需要在调用之间存储这些数据。

so,在伪代码中:

MainFunction()
{
    GenerateData1()
    GenerateData2()
}
GenerateData1()
{
    PassDataToDLL() //(DLL Stores data)
}
GenerateData2()
{
    PassDataToDLL() //(DLL operates on both sets of data, returns results via pointer)
    OutputResults()
}

有趣的是,如果我修改上面的这样在传递数据给dll后,函数GenerateData1调用GenerateData2本身,然后它工作!

我是在尝试完成一些无法完成的事情,还是有一种技术可以帮助实现?

你可以做

class SharedData
{
      //Store all data in this class
};
std::shared_ptr<ShareData> pSharedData = std::make_shared<SharedData>();

你可以在dll中传递pSharedData,当没有人引用它时,它会被自动删除。