|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 18, 2003 17:57:53 Объясните такому тупому на пальцах. Есть вызов HeapAlloc (20 кб), затем HeapReAlloc (2 кб), после чего если попробовать опять HeapReAlloc(20 кб) говорит, что нету памяти :( . И еще - в API написано, что при частом юзании HeapAlloc память дефрагментируется, относится ли это GlobalAlloc&? |
|
|
Дата: Авг 18, 2003 18:05:51 А как HeapCreate() был вызван? |
|
|
Дата: Авг 18, 2003 19:45:11 __Ranger Да и фрагмент кода с вызовами HeapAlloc / HeapReAlloc не помешает. относится ли это GlobalAlloc&? AFAIK, нет. |
|
|
Дата: Авг 19, 2003 02:20:03 init_data proc invoke GetProcessHeap push eax invoke HeapAlloc,eax,HEAP_ZERO_MEMORY,20480 mov data_head,eax call read_options mov eax,data_tail sub eax,data_head pop ecx push eax invoke HeapReAlloc,ecx,0,data_head,eax pop ecx ; если блок был сдвинут mov data_head,eax add eax,ecx mov data_tail,eax ret init_data endp ;немного дальше ... invoke GetProcessHeap push eax invoke HeapAlloc,eax,HEAP_ZERO_MEMORY,20480 PrintError ;нету памяти Между кусками исп. GlobalAlloc, больше нигде куча не используется |
|
|
Дата: Авг 19, 2003 04:53:20 __Ranger Проверил. У меня этот код прекрасно работает (Windows ME). Возможно, проблема вовсе не в хипе. Проверьте эту программу под отладчиком (на всякий случай можно напичкать туда HeapSize между HeapAlloc/ReAlloc). |
|
|
Дата: Авг 19, 2003 13:16:14 > Между кусками исп. GlobalAlloc, больше нигде куча не используется И что это по твоему доказывает? GlobalAlloc() вызывает тот же самый HeapAlloc(), ибо как сказано в Platform SDK: "Windows memory management does not provide a separate local heap and global heap". Или я гоню? =) |
|
|
Дата: Авг 19, 2003 13:56:06 Dr.Golova В 2000 точно одно и тоже.. А в 98.. чёрт их знает. |
|
|
Дата: Авг 20, 2003 01:00:45 Все дороги (аллокации...) ведут к ntdll.RtlAllocateHeap(). |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |