我可以在函数调用之间保持c ++ DLL中的内存吗?

时间:2011-12-13 14:37:48

标签: c++ dll

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

所以,在psuedo-code中:

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本身,那么它可以工作!

我是想尝试一些无法做到的事情,还是有技巧可以提供帮助?

1 个答案:

答案 0 :(得分:3)

你可以做到

class SharedData
{
      //Store all data in this class
};

std::shared_ptr<ShareData> pSharedData = std::make_shared<SharedData>();

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