![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
knave |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: нет Всего: 5 |
Объясните в чем разница между памятью выделенной через new или malloc и этими апи функциями GlobaAlloc LocalAlloc
Почему то во многих системных и мультимедийных приложениях используют именно последние? Чем это обусловленно. -------------------- С наилучшими пожеланиями !!! |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
MSDN
GlobalAlloc и LocalAlloc выделяют память соответственно из глобальной и локальной кучи. new и malloc отличаются тем что malloc не вызывает конструктор при выделении памяти для обьекта, он только выделяет память, new к тому же вызывает конструктор... А насчет того зачем используют GlobalAlloc вместо malloc могу только догадаться... malloc это CRT (C RunTime) функция, в итоге она вызывает тот же самый GlobalAlloc или LocalAlloc или HeapAlloc точно сказать не могу, под линукс тот же malloc работает но уже вызывает соответственно линуксовские системные вызовы (это как API). Это сообщение отредактировал(а) azesmcar - 8.2.2005, 14:30 |
|||
|
||||
knave |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: нет Всего: 5 |
malloc - скорее всего она делает память перемещаемой. Я посмотрел, везде где юзают xxxxxAlloc ставят Флаг FIXED или LPTR (FIXED | ZEROINIT). Наверное чтобы ОС непереместила куда нить кусок памяти пока ее кто то обрабатывает (чтобы ненао было делать Lock/Unlock).
-------------------- С наилучшими пожеланиями !!! |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
никакого malloc в winapi нет и небыло
![]() делаем GlobalAlloc,GMEM_FIXED,size и не мучаемся ![]() -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
oleg1973
|
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
Fixin
что именно почему? -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
В чем разница для винда между new и ****Alloc. Если для простых смертных. На что влияет GMEM_. Я не пользовался раньше.
|
|||
|
||||
chipset |
|
||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 2 Всего: 165 |
new - чисто С++'овский оператор, выделяет память под класс+вызывает конструктор malloc - устаревший оператор Си, из библиотеки CRT. Выделяет определенное кол-во памяти. GlobalAlloc, LocaAlloc - функции Win32Api.
malloc устаревший оператор, и использование его вместе с С++-структурой как то не очень хороший стиль.. Некоторые люди не юзают STL, и вместо этого им приходится использовать ReadFile/WriteFile из Win32Api, где удобнее и уместнее воспользоваться аналогичным оператором WinApi. Ну и кроме того, ты же понимаешь что дополнительная цепочка вызовов функций скушает ресурсы, что нехорошо для системных и мультимедийных прилаг ![]() Добавлено @ 03:27
Если ты насчёт ****Alloc то там ещё есть такая фича как HeapAlloc, которая позволяет работать с кучами.. --------------------
|
||||||||
|
|||||||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Я не про то. Я про виды выделяемой памяти флагами GME_******. Каки е виды бывают и в чем разница?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
открываем справку и читаем:
;) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Ну объясните, что за передвижимая память и непередвижимая.
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
опять смотрим в справку:
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |