Вот такое:
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.
Что не так?