|
|
|
Непонятная ошибка при завершении приложения!!!
|
|||
|---|---|---|---|
|
#18+
Привет всем! Создаю 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; } указатель на этот список. нужное извлекает, а когда приложение закрывается? то выскакивает ошибка: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:23:51 |
|
||
|
Непонятная ошибка при завершении приложения!!!
|
|||
|---|---|---|---|
|
#18+
поставь delete вместо free. И еще - ты забыл саму строку из структуры удалить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:49:25 |
|
||
|
Непонятная ошибка при завершении приложения!!!
|
|||
|---|---|---|---|
|
#18+
Ну как минимум память была выделена и успешно забыт указатель на нее. Вот в этих двух строках: тот самый res=new stLPR; res=Recognize(src); //функция взвращающая указатель на односвязанный список из dll А потом идет попытка освободить неизвестно какую память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:49:43 |
|
||
|
Непонятная ошибка при завершении приложения!!!
|
|||
|---|---|---|---|
|
#18+
И еще одно - в dll и в основном exe могут быть разные хипы динамической памяти. Поэтому, то, что выделяется в dll должно и освобождаться в dll. И наоборот. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 15:35:01 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=273&tid=2028031]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
311ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 689ms |

| 0 / 0 |
