powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятная ошибка при завершении приложения!!!
4 сообщений из 4, страница 1 из 1
Непонятная ошибка при завершении приложения!!!
    #34860038
тот самый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Создаю dll в которой опрделена глобальная переменная stLPR *. stLPR - односвязанный список:

struct stLPR {
stLPR *next;
unsigned char *lpr;
int left;
int top;
int right;
int bottom;
};


в одной из функций dll форируется список:

if (res->count>0)
{
newLPR=new stLPR;
newLPR->lpr=new char(res->count+1);
newLPR->next=NULL;

for (k = 0; k < res->count; ++k)
{
const EANYCODE_CHAR* ch = &res->text[k];
newLPR->lpr[k]=ch->char_code;
}
newLPR->lpr[k]='\0';

if (LPRs==NULL) LPRs=newLPR;
else LPRs->next=newLPR;

}

и указатель на сформированный список содержащийся в глобальной переменной stLPR * возвращается в приложение который использует эту dll. Все хорошо .... вызывающее тестовое приложение получает

int main(int argc, char* argv[])
{
IplImage *src=0;
stLPR *res;
int flag=1;
src=cvLoadImage(argv[1],0);
res=new stLPR;
res=Recognize(src); //функция взвращающая указатель на односвязанный список из dll


printf("%s", res->lpr);

free(res);

return 0;
}

указатель на этот список. нужное извлекает, а когда приложение закрывается? то выскакивает ошибка:
...
Рейтинг: 0 / 0
Непонятная ошибка при завершении приложения!!!
    #34860149
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставь delete вместо free.

И еще - ты забыл саму строку из структуры удалить
...
Рейтинг: 0 / 0
Непонятная ошибка при завершении приложения!!!
    #34860151
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как минимум память была выделена и успешно забыт указатель на нее. Вот в этих двух строках:
тот самый
res=new stLPR;
res=Recognize(src); //функция взвращающая указатель на односвязанный список из dll

А потом идет попытка освободить неизвестно какую память.
...
Рейтинг: 0 / 0
Непонятная ошибка при завершении приложения!!!
    #34860670
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще одно - в dll и в основном exe могут быть разные хипы динамической
памяти. Поэтому, то, что выделяется в dll должно и освобождаться в dll.
И наоборот.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятная ошибка при завершении приложения!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]