· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Проблема!!! Как использовать STRUCT и динамическую

<< . 1 . 2 . 3 .

Посл.отвђт Сообщен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
вово.. Я не видел другого способа с КлипБоардом!!!

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081