| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Функции выделения памяти |
| Автор: knave 8.2.2005, 13:53 |
| Объясните в чем разница между памятью выделенной через new или malloc и этими апи функциями GlobaAlloc LocalAlloc Почему то во многих системных и мультимедийных приложениях используют именно последние? Чем это обусловленно. |
| Автор: azesmcar 8.2.2005, 14:26 | ||
MSDN
GlobalAlloc и LocalAlloc выделяют память соответственно из глобальной и локальной кучи. new и malloc отличаются тем что malloc не вызывает конструктор при выделении памяти для обьекта, он только выделяет память, new к тому же вызывает конструктор... А насчет того зачем используют GlobalAlloc вместо malloc могу только догадаться... malloc это CRT (C RunTime) функция, в итоге она вызывает тот же самый GlobalAlloc или LocalAlloc или HeapAlloc точно сказать не могу, под линукс тот же malloc работает но уже вызывает соответственно линуксовские системные вызовы (это как API). |
| Автор: knave 8.2.2005, 19:42 |
| malloc - скорее всего она делает память перемещаемой. Я посмотрел, везде где юзают xxxxxAlloc ставят Флаг FIXED или LPTR (FIXED | ZEROINIT). Наверное чтобы ОС непереместила куда нить кусок памяти пока ее кто то обрабатывает (чтобы ненао было делать Lock/Unlock). |
| Автор: oleg1973 8.2.2005, 21:36 |
| никакого malloc в winapi нет и небыло делаем GlobalAlloc,GMEM_FIXED,size и не мучаемся |
| Автор: Fixin 8.2.2005, 22:41 | ||
oleg1973
|
| Автор: oleg1973 9.2.2005, 02:16 |
| Fixin что именно почему? |
| Автор: Fixin 9.2.2005, 18:43 |
| В чем разница для винда между new и ****Alloc. Если для простых смертных. На что влияет GMEM_. Я не пользовался раньше. |
| Автор: chipset 10.2.2005, 03:26 | ||||||
new - чисто С++'овский оператор, выделяет память под класс+вызывает конструктор malloc - устаревший оператор Си, из библиотеки CRT. Выделяет определенное кол-во памяти. GlobalAlloc, LocaAlloc - функции Win32Api.
malloc устаревший оператор, и использование его вместе с С++-структурой как то не очень хороший стиль.. Некоторые люди не юзают STL, и вместо этого им приходится использовать ReadFile/WriteFile из Win32Api, где удобнее и уместнее воспользоваться аналогичным оператором WinApi. Ну и кроме того, ты же понимаешь что дополнительная цепочка вызовов функций скушает ресурсы, что нехорошо для системных и мультимедийных прилаг Добавлено @ 03:27
Если ты насчёт ****Alloc то там ещё есть такая фича как HeapAlloc, которая позволяет работать с кучами.. |
| Автор: Fixin 10.2.2005, 18:50 |
| Я не про то. Я про виды выделяемой памяти флагами GME_******. Каки е виды бывают и в чем разница? |
| Автор: _hunter 10.2.2005, 19:19 | ||
открываем справку и читаем:
;) |
| Автор: Fixin 10.2.2005, 19:20 |
| Ну объясните, что за передвижимая память и непередвижимая. |
| Автор: _hunter 10.2.2005, 21:02 | ||
опять смотрим в справку:
|