Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение памяти 
:(
    Опции темы
Nloge
Дата 5.12.2002, 12:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может меня кто-нибудь просветить о различиях и способах использования subj.
То есть нужно мне в программке выделить буфер на N байт (нет N мало... Пусть будет M байт!). Это можно сделать различными способами, а именно:
1. просто вызвать new
2. вызвать malloc (или _malloc_dbg)
3. вызвать GlobalAlloc
4. вызвать HeapAlloc
5. вызвать LocalAlloc
6. вызвать VirtualAlloc
и так далее (дополните что я пропустил...)
Так вот вопрос - в каких случаях и почему нужно использовать тот или иной метод.
  Вверх
Baa
Дата 5.12.2002, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 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
PM ICQ   Вверх
dim
Дата 6.12.2002, 04:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











На самом деле не все так просто, как кажется на первый взглад и все зависит от конкретной задачи. GlobalAlloc и LocalAlloc лучше вообще не использовать. Теперь о других в большинстве случаев конешно предпочтительнее new для переносимости кода, кроме того если ты размещаешь классы в куче, то без new ты вообще не обойдешся. О malloc можно говорить только если ты используешь чистый C (а не C++), и опять же на первом месте переносимость. В специальных случаях хорош HeapAlloc, если у тебя несколько куч (например несколько потоков и каждый юзает свою кучу), кстати HeapAlloc, если ты даже используешь одну кучу имеет встроенный механизм блокировки (который выполняется в режиме ядра в отличие от библиотечных функций). О VirtualAlloc лучше подумать если будут манипуляции с достаточно большими обемами памяти за раз (больше 1M или 2M согласно MSDN). А вообще все зависит от конкретной задачи.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0990 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.