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ć?