Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++/CLI -> C# 
V
    Опции темы
cupper
Дата 21.6.2011, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



есть библиотека. написанная на C++/CLI, в ней есть класс X, с методами
Код

~X() {!X()}
!X() {delete native;}

где native это указатель на динамически выделенную память "С++шным выделятором" new.

Есть код на C#, который создает экземпляр сего класса X.
Код

X x = engine.getX();

getX() это тоже из библиотеки C++\CLI и там по средством вызова gcnew создается возвращаемый объект X.

При завершении программы (когда происходит сборка мусора) вызывается финализер !X() и я получаю эксцепшен на попытку чтения записи защищенной памяти.
Но если я в коде явно вызову x.dispose(), то я опять таки попадая в !X() корректно (без эксцепшенов) удаляю объект.

Может мне кто прояснить ситуацию, я просто в С++/CLI вообще не секу. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0625 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.