Управление памятью при переносе кода из C ++ в C #

Я пытаюсь обернуть мой код C ++ в C #.
Мне удалось экспортировать свои функции в DLL, а затем импортировать их из C #.

Моя проблема заключается в следующем:

В моем коде C ++ у меня есть синглтон, который я создаю с помощью функции «createInstance». В моей новой функции newCreateInstance, которую я экспортирую в DLL, я просто вызываю старый createInstance, а затем возвращаю указатель void, указывающий созданный мной экземпляр синглета.

В другой функции я пытаюсь оперировать экземпляром синглета. Итак, я получаю указатель void, который затем приводим к соответствующему указателю, а затем пытаюсь с ним работать.

Но я думаю, что когда я вызываю вторую функцию (после вызова первой) из C #, мой экземпляр-одиночка уже стирается из памяти. Как мне сохранить экземпляр в моей куче / стеке? это вообще возможно, или я должен сделать это по-другому?

p.s — я не могу создать тот же класс на C #, потому что я не знаю, что это реализация (это также происходит из файла DLL / LIB). Поэтому я должен использовать пустые указатели.

Спасибо!!!

1

Решение

Если ваши предположения о преждевременной сборке мусора верны, вы должны использовать GC.KeepAlive как объяснил на MSDN:

MSDN

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]