Problem polega na tym, że w programie jest wskaźnik zainicjalizowany NULL-em
TCHAR *ptchTmp = NULL;
zrobiłem (dla siebie, na próbę) DLL-kę, która "wypełnia" ten wskaźnik, jest on przekazywany jako referencja w argumencie funkcji
czyli w DLL jest funkcja
void func(TCHAR **ptch);
która jest wywoływana w programie
dllobj->func(&ptchTmp );
Wszystko działa jak należy, do czasu instrukcji
if(ptchTmp )
delete [] ptchTmp;
gdy jest to pojawia się komunikat
Windows has triggered a breakpoint in Testdll.exe.
This may be due to a corruption of the heap, which indicates a bug in Testdll.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while Testdll.exe has focus.
The output window may have more diagnostic information.
gdy tej instrukcji nie ma pojawia się informacja, że pamięc nie została zwolniona i nastąpił wyciek
Detected memory leaks!
Dumping objects ->
D:\mfc\dlltest\testdll\cobjdll.cpp(42) : {71} normal block at 0x00AA8E90, 82 bytes long.
Data: <8 1 6 5 a f 1 8 > 38 00 31 00 36 00 35 00 61 00 66 00 31 00 38 00
Object dump complete.
Od razu zaznaczam, że nie upieram się, że to co zrobiłem, jest właściwym sposobem postępowania - może od samego początku jest to do niczego i trzeba coś zmienić
Wydaje mi się, że chodzi o to, ze pamieć alokuję w DLL, a zwalniam w programie - i tu jest problem - ale jak sobie z tym poradzić?