![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Nloge |
|
|||
Unregistered |
Может меня кто-нибудь просветить о различиях и способах использования subj.
То есть нужно мне в программке выделить буфер на N байт (нет N мало... Пусть будет M байт!). Это можно сделать различными способами, а именно: 1. просто вызвать new 2. вызвать malloc (или _malloc_dbg) 3. вызвать GlobalAlloc 4. вызвать HeapAlloc 5. вызвать LocalAlloc 6. вызвать VirtualAlloc и так далее (дополните что я пропустил...) Так вот вопрос - в каких случаях и почему нужно использовать тот или иной метод. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Ты еще забыл CoTaskMemAlloc, HeapAlloc
А вместо malloc следует использовать new... ИМХО, тебе лучше использовать VirtualAlloc... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
dim |
|
|||
Unregistered |
На самом деле не все так просто, как кажется на первый взглад и все зависит от конкретной задачи. GlobalAlloc и LocalAlloc лучше вообще не использовать. Теперь о других в большинстве случаев конешно предпочтительнее new для переносимости кода, кроме того если ты размещаешь классы в куче, то без new ты вообще не обойдешся. О malloc можно говорить только если ты используешь чистый C (а не C++), и опять же на первом месте переносимость. В специальных случаях хорош HeapAlloc, если у тебя несколько куч (например несколько потоков и каждый юзает свою кучу), кстати HeapAlloc, если ты даже используешь одну кучу имеет встроенный механизм блокировки (который выполняется в режиме ядра в отличие от библиотечных функций). О VirtualAlloc лучше подумать если будут манипуляции с достаточно большими обемами памяти за раз (больше 1M или 2M согласно MSDN). А вообще все зависит от конкретной задачи.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |