Hallo,
Mein Programm stürzt beim Freigen der Resourcen ab.
Für mich sieht aber eigentlich alles OK aus und ich kann den Fehler einfach nicht finden.
Hat jemand eine Idee?
Der entscheidende Programmteil:
WCHAR **_sz;
// Wenn keine variablen Strings vorhanden sind, dann muss der Zeiger auf einen leeren String zeigen,
// andernfalls stürzt die Funktion FormatMessage unter bestimmten Umständen ab
if(m_pevlr->NumStrings != 0)
_sz = (WCHAR**)malloc((m_pevlr->NumStrings)* sizeof(WCHAR*)+ ADDITIONAL_POINTERS * sizeof(WCHAR*));
else
_sz = 0;
if(uSize > 0) // Nur ausführen, wenn es einen variablen Teil gibt
{
memcpy(pwcDescription, (WCHAR*)((LPBYTE)m_pevlr + m_pevlr->StringOffset), uSize);
// Die einzelnen Strings, die im Speicher gefunden werden, auf ein zweidimmensionales Array aufteilen...
UINT uStringOffset = 0;
UINT uCounter = 0;
while(uCounter NumStrings)
{
wcout wcout _sz[uCounter] = (WCHAR*) malloc((wcslen((WCHAR *)(pwcDescription + uStringOffset)) + 1) * sizeof(WCHAR));
wcscpy(_sz[uCounter], (WCHAR *)(pwcDescription + uStringOffset));
uStringOffset += wcslen((WCHAR *)(pwcDescription + uStringOffset)) + 1;
uCounter++;
}
for(UINT i=uCounter; i {
_sz[i] = (WCHAR*) malloc(2*sizeof(WCHAR));
_sz[i] = L"";
}
}
if(uSize > 0) // In dem Fall wurde der Speicher alloziert
{
for(UINT i=0; iNumStrings)+ADDITIONAL_POINTERS); i++)
free(_sz[i]); // Stürtz beim ersten leeren String ab
free(_sz);
}