GlobalAlloc+GlobalReAlloc+GlobalFree + AppVerifier = crash
От: Alexander G Украина  
Дата: 14.04.16 14:47
Оценка:
Вот такое:

int main()
{
    // GMEM_FIXED gives the same behavior, with GMEM_MOVEABLE works fine
    HGLOBAL hExpBuffer = ::GlobalAlloc(GMEM_DDESHARE, 20000); 
    hExpBuffer = GlobalReAlloc(hExpBuffer, 10000, 0);
    GlobalFree(hExpBuffer);
    return 0;
}


или такое:

int main()
{
    void* puffer = HeapAlloc(::GetProcessHeap(), 0, 20000); 
    puffer = HeapReAlloc(::GetProcessHeap(), HEAP_REALLOC_IN_PLACE_ONLY, puffer, 10000);
    HeapFree(::GetProcessHeap(), 0, puffer);
    return 0;
}



AppVerifier видит тут следующую проблему:

VERIFIER STOP 0000000D: pid 0x24A8: Heap block corrupted after being freed. 

    00511000 : Heap handle for the heap owning the block.
    06F051E0 : Heap block that is corrupted.
    00002710 : Size of the block or zero if size cannot be determined.
    06F051CC : Not used.


Что не так?
Русский военный корабль идёт ко дну!
Отредактировано 14.04.2016 14:54 Alexander G . Предыдущая версия . Еще …
Отредактировано 14.04.2016 14:50 Alexander G . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.