|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 2, 2003 15:35:55 Просто, мне показалось, что ты всё слишком усложняешь. Возможно, я привык к ним. :) При программировании на ассемблере это особенно заметно. Что самое интересно, что как раз на асме эти ошибки сложнее допустить. Не знаю.. может мне так кажется.. |
|
|
Дата: Авг 2, 2003 15:44:40 Спасибо за дельный совет, bsl_zcs, я учту. Кстати неплохая идея с фичей определения сколько наделал беспорядка юзер :)) Я тоже думаю, что менаджер - это сложновато и грозит появлением ошибок и багов. Хоть я и знаю как его по сути написать (изучал сишные исходники функций new и т.п.). Тогда уж это проще на си написать, чем на асме. Но я то затеял это ради изучения ассемблера под виндовоз... Да и к томуже если все получится, то из компилятора вылезет очень хорошая длл-ка :)) Так что буду пытаться делать элементарными алгоритмами ато запутаюсь совсем. К тому же со временем мож неплохой менаджер памяти получится... Сейчас я кручу алгоритм Edmond-а. В принципе думаю получится. |
|
|
Дата: Авг 2, 2003 16:29:13 Есть еще вопрос: я гдето вычитал, что для длл куча не выделяется. И что тогда мне возвратит GetProcessHeap? А не надо ли мне для этого использовать HeapCreate? |
|
|
Дата: Авг 2, 2003 17:03:02 profi_r ??? Такого БЫТЬ НЕ МОЖЕТ Ты наверно не понял что-то :(( Просто Win32 не различает, кто выделил кучу, DLL, или нет |
|
|
Дата: Авг 2, 2003 17:09:02 я в MSDN-е еще одну фичу вычитал - вот здесь http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memor y/base/low_fragmentation_heap.asp Там написано как создавать маленькие кусочки ДП. Тока чето не понял как это работает. Если кто с этим сталкивался просвятите... |
|
|
Дата: Авг 2, 2003 18:04:03 Есть еще один вопросик: При выходе из программы обязательно память освобождать или виндовоз сам все сделает? А если не сделает что мне за это будет?? |
|
|
Дата: Авг 2, 2003 18:15:43 profi_r Этот вопрос старый как Дос :))) Стихи (с) Edmond :)))) Ну как ты думаешь? |
|
|
Дата: Авг 2, 2003 18:30:54 Должна виндовз, а вот сделает или нет вопрос... |
|
|
Дата: Авг 2, 2003 18:31:42 А черт его знает этот виндовоз - я гдето слышал что он чистит все, что осталось от приложений... |
|
|
Дата: Авг 2, 2003 19:01:09 profi_r ОК, объясню. Во первых так происходит, потому что много описателей, (хотя не все) находятся в памяти, которая принадлежит твоему Приложению. Нет приложения -- нет и описателей, -- нет и ресурсов.. Контроль там не очень сложный |
|
|
Дата: Авг 2, 2003 19:06:18 Я тут попробовал одну штуку: ;этот код расположен в длл ;распределяем память .ELSEIF uMsg == WM_CREATE invoke GetProcessHeap invoke HeapAlloc,eax,0,N_BLK_IN_MEMBLK * sizeof STRINGS ... .ELSEIF uMsg == WM_DESTROY invoke GetProcessHeap invoke HeapFree,eax,0,pBegin .if eax == NULL ;в этом месте получается ошибка!!! .endif invoke PostQuitMessage,NULL Значит виндовоз уже очистил память? |
|
|
Дата: Авг 2, 2003 19:09:56 · Поправил: Four-F [ profi_r: А черт его знает этот виндовоз - я гдето слышал что он чистит все, что осталось от приложений... ] Чистит, чистит, но лучше самому. |
|
|
Дата: Авг 3, 2003 12:38:11 . GlobalAlloc это и есть функция. Оставлена для обратной совместимости и не рекомендуется к употреблению. А как без неё с Clipboard то работать? |
|
|
Дата: Авг 3, 2003 14:12:23 · Поправил: Four-F Ну так это и есть типа обратная совместимость. Может и можно как-то по-новому с клипбордом работать, хрен его знает, а смотреть лень. Но все эти функции зародились еще во времена Win32s, еще до w95. А тогда 16-битные проги в полный рост шли. Так что если с клипбордом без нее и нельзя работать, значит придется ее использовать. А если можно, то лучше уж тогда сразу HeapAlloc. По любому, по крайней мере под NT, GlobalAlloc это враппер над ntdll!RtlAllocateHeap, а HeapAlloc это форвард к ntdll!RtlAllocateHeap, т.е. быстрее дотопаем куда нужно. |
|
|
Дата: Авг 4, 2003 17:38:55 Four-F АААА, молодец The Svin вово.. Я не видел другого способа с КлипБоардом!!! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081 |