Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2016, 17:20   #1
sitkh
Новичок
Джуниор
 
Регистрация: 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.
sitkh вне форума Ответить с цитированием
Старый 12.02.2016, 17:57   #2
sitkh
Новичок
Джуниор
 
Регистрация: 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.
sitkh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плагин к программе 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