Форум программистов, компьютерный форум CyberForum.ru

malloc и new (динамическая память) - C++

Восстановить пароль Регистрация
 
Plusic
 Аватар для Plusic
1 / 1 / 0
Регистрация: 26.07.2012
Сообщений: 26
10.12.2012, 21:53     malloc и new (динамическая память) #1
Ребят, привет. ОЧчень интересует вопрос с динамической памятью . Как эта штука реализованна внутри ? я понимаю, что процессу выделяется в 32 битных приложениях 4 гб адрессное пространство максимально. В Windows в частности 2 гб (поправте меня, если я не права). Часть забирают системные вызовы, часть сама программа: часть стек, часть под глобальную память и т.д Вот на ассемблере, эта штука доступна программисту, и пользуется он этим делом ,как душа пожелает. А вопрос вот: в c/с++ такая штука не доступна изначально ,и получается функция malloc и оператор new ?просто круто оперируют с этим адресным пространством ? или все хитро, и они запрашивают память у ОС, и уже она отвечает за динамическую память? Или я все путаю, поправте меня. Расскажите чуть-чуть. И если можно как эта штука вся работает. Очень интересно. Можно ли такую штуку сделать и не пользоваться malloc, чисто из академических соображений. Всем спасибо.

Добавлено через 2 часа 36 минут
такая каша в голове.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2012, 21:53     malloc и new (динамическая память)
Посмотрите здесь:

C++ Динамическая память
C++ Динамическая память
Статическая память,Динамическая память. C++
C++ Выделить память под двумерный массив за один вызов функции malloc
Нужно ли под массив выделять память функциями malloc или new? C++
Как malloc выделяет память? C++
И снова динамическая память, malloc и free в конструкторе и деструкторе C++
C++ Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PlayaRC
4 / 4 / 0
Регистрация: 10.03.2012
Сообщений: 121
07.06.2014, 19:47     malloc и new (динамическая память) #2
не уверен, но я думаю, что malloc\free для выделения\освобождения памяти использует VirtualAlloc и VirtualFree соответственно. Ну это под виндой
Убежденный
Системный программист
 Аватар для Убежденный
14213 / 6228 / 988
Регистрация: 02.05.2013
Сообщений: 10,385
Завершенные тесты: 1
07.06.2014, 20:30     malloc и new (динамическая память) #3
Что на C/C++, что на ассемблере, что на других языках - объем доступной
для использования в программе памяти во всех случаях одинаков.

Malloc, new, heap и т.п. - обертки над VirtualAlloc. Последняя, как известно,
умеет выделять память только гранулярностью в размер страницы (4 Кб), для
маленьких объектов это слишком расточительно. Вот для этого и нужны
такие вещи, как malloc/new.
Yandex
Объявления
07.06.2014, 20:30     malloc и new (динамическая память)
Ответ Создать тему
Опции темы

Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru