Могу ли я поддерживать память в c ++ DLL между вызовами функций? - PullRequest
3 голосов
/ 13 декабря 2011

Итак, я пишу плагин для программы, который требует, чтобы ему передавались две большие партии данных.Необходимо хранить эти данные между вызовами.

, поэтому в псевдо-коде:

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 Ответ

3 голосов
/ 13 декабря 2011

вы можете сделать

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

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

Вы можете передать pSharedData вокруг dll, и он будет автоматически удален, когда никто не ссылается на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...