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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Plusic
1 / 1 / 0
Регистрация: 26.07.2012
Сообщений: 26
#1

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

10.12.2012, 21:53. Просмотров 377. Ответов 2
Метки нет (Все метки)

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

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

И снова динамическая память, malloc и free в конструкторе и деструкторе - C++
Короче есть, класс, который например хранит строку, я его храню в структуре, после я выдиляю динамическу память пот эту структуру и копирую...

Как malloc выделяет память? - C++
Почему, если я выделяю память для одного int, вот так int *myArray = (int *)malloc(sizeof(int)); То в итоге я могу записать в myArray...

Статическая память,Динамическая память. - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Нужно ли под массив выделять память функциями malloc или new? - C++
собственно вот программа по вводу размера массива, вводу массива, сортировки: #include <iostream> #include <windows.h> using...

Выделить память под двумерный массив за один вызов функции malloc - C++
Выделить память под двумерный массив за один вызов функции malloc Если можно - с комментариями

Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc? - C++
Интересует данный вопрос. Можно ли и имеет ли вобще смысл например выделять память под объект класса с помощью функций calloc, malloc или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PlayaRC
5 / 5 / 0
Регистрация: 10.03.2012
Сообщений: 121
07.06.2014, 19:47 #2
не уверен, но я думаю, что malloc\free для выделения\освобождения памяти использует VirtualAlloc и VirtualFree соответственно. Ну это под виндой
0
Убежденный
Системный программист
Эксперт С++
15547 / 7055 / 1114
Регистрация: 02.05.2013
Сообщений: 11,467
Завершенные тесты: 1
07.06.2014, 20:30 #3
Что на C/C++, что на ассемблере, что на других языках - объем доступной
для использования в программе памяти во всех случаях одинаков.

Malloc, new, heap и т.п. - обертки над VirtualAlloc. Последняя, как известно,
умеет выделять память только гранулярностью в размер страницы (4 Кб), для
маленьких объектов это слишком расточительно. Вот для этого и нужны
такие вещи, как malloc/new.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2014, 20:30
Привет! Вот еще темы с ответами:

динамическая память.... - C++
Ввести двухмерном массив, для работы с массивом использовать указатель. Массив разместить в динамической памяти. Определение суммы...

Динамическая память - C++
Народ, если кому не сложно помогите переделать вот эту программу со структурами нужно сделать так чтобы для хранения данных она...

Динамическая память с++ - C++
Как использовать динамическую память в с++

Динамическая память. - C++
Всем привет! Уважаемые знатоки, можете посмотреть мою реализацию класса вектор? У меня при их большем количестве в программе вечно...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru