|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.02.2016, 17:20 | #1 |
Новичок
Джуниор
Регистрация: 12.02.2016
Сообщений: 2
|
Пишу плагин к программе, документации нет.
Приветствую всех.
Столкнулся с проблемой: Пишу плагин к программе, документации нет. Программа вызывает класс и получает его свойства из длл. Сделал DLL, реализовал класс и свойства. Вызывающая программа работает так: При одиночном вызове myclass = MyDataManager::MyDataManager(); dataString = myClass::GetDataString(myclass); программа работает нормально когда вызывают подряд несколько раз, больше одного myclass = MyDataManager::MyDataManager(); dataString = myClass::GetDataString(clientNo); ... myclass = MyDataManager::MyDataManager(); addressString = myClass::GetDataString(clientNo); ... myclass = MyDataManager::MyDataManager(); zipString = myClass::GetDataString(clientNo); идет падение, с ошибкой [HEAP] Invalid address specified to RtlFreeHeap( 01200000, 001C0748 ) На этапе компиляции все ок, но после вызова программой метода, который вызывается несколько раз этот код, получаю екзепшен 0xC0000005 на очистке объектов на delete. Отладкой вижу что падает на операторе delete, уничтожение объекта ,созданного первым, проходит нормально, остальные 2 - с ошибкой. Где почитать можно на предмет такой штуки? Спасибо. Последний раз редактировалось sitkh; 12.02.2016 в 17:50. |
12.02.2016, 17:57 | #2 |
Новичок
Джуниор
Регистрация: 12.02.2016
Сообщений: 2
|
В методе GetDataManager реализовано:
__declspec(dllexport) static MyDataManager& MyDataManager::GetMyDataManager(voi d) static MyDataManager *myClass = NULL; if (myClass == NULL) { myClass = new MyDataManager(); } return *myClass;MyClass) } В отладичке вижу что из приложения идут вызовы: myClass1 = MyDataManager::GetMyDataManager(&v2 0); Name = MyDataManager::GetNameString(myClas s1);//возвращаю строку 1 ... operator delete(v19); // тут все нормально myClass2 = MyDataManager::GetMyDataManager(&v4 ); Address= MyDataManager::GetAddressString(myC lass2);//возвращаю строку 2 ... operator delete(v12); // тут уже падает Последний раз редактировалось sitkh; 12.02.2016 в 18:06. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Плагин к программе Apophysis. Нужно подробное объяснение того, что тут происходит. | NataliSha | Помощь студентам | 0 | 15.06.2015 17:11 |
Пишу свой плагин [WP] | Djes92 | WordPress и другие CMS | 1 | 24.12.2012 04:10 |
Пишу плагин. Вызвать callback функцию после ответа от сервера. | Mr_freeman | JavaScript, Ajax | 0 | 20.12.2012 16:12 |
Укажите ошибки в программе не давно пишу на си++ | zloymag | Общие вопросы C/C++ | 5 | 19.12.2009 15:59 |
пишу плагин для IExplorer`а | good3p | Общие вопросы .NET | 1 | 23.04.2008 17:54 |