|
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
|
||||||
Операторы динамического выделения памяти - new/delete26.03.2011, 13:02. Показов 8596. Ответов 38
Метки нет (Все метки)
Здравствуйте.
Я немного не понимаю некоторый момент, связанный с динамическим выделением памяти, а именно - с объемом выделяемой памяти. Дано Разные персональные компьютеры: 1. Win XP Pro SP3 32bit - 2 Gb RAM; 2. Win XP Pro SP3 32bit - 3 Gb RAM; 3. Win Server 2003 64 bit - 8 Gb RAM. Задача Динамически выделить крупный "кусок" RAM (1 Gb и более), а именно - создать массив типа структура. Мое решение
Ни на одном из трех указанных выше ПК - не получается выделить объем памяти более 512 МБайт. В момент попытки динамического выделения памяти - ОС и все запущенное ПО потребляет не более 700 МБайт. То есть всегда свободно достаточное количество памяти, чтобы можно было ею воспользоваться. (В приведенном примере производится попытка выделения памяти объемом больше 512 МБайт). Вопрос 1. Возможно ли вообще выделать больше 512 Мбайт памяти динамически или нет? 2. Можно ли заставить программу "кушать" всю свободную оперативную память и соответственно манипулировать всей свободной оперативной памятью в системе? (К примеру 8 Gb RAM). 3. На сколько я знаю, в С++ рациональнее пользоваться операторами new/delete, вместо функций malloc()/free(). Это правда? Пост Скриптум Не спрашивайте зачем так много программе нужно оперативки. Просто нужно ![]() Всем заранее спасибо за Ваши ответы и подсказки. С уважением.
0
|
||||||
| 26.03.2011, 13:02 | |
|
Ответы с готовыми решениями:
38
По поводу динамического выделения памяти
Функциии динамического выделения и освобождения памяти |
|
|
|||
| 26.03.2011, 13:09 | |||
|
Добавлено через 3 минуты И попробуй ещё malloc'ом напрямую (т.е. без new) выделить более 512 гигов. А то запрет может быть в том числе и в библиотеке run-time поддержки Си++. new внутри себя всё равно через malloc работает. Под unix'ом чтобы выделить очень много памяти, то нужно работать через mmap вместо malloc'а (хотя некоторые реализации malloc'а умеют работать с mmap), возможно, что под виндами есть тоже какой-нибудь вызов в WinAPI. Ну и, к слову, malloc под виндами внутри себя тоже работает через WinAPI.
1
|
|||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
| 26.03.2011, 13:12 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
|
||
| 26.03.2011, 13:31 [ТС] | ||
|
Хм. А если у меня 1 массив типа структура будет иметь размер 1 Gb или выше? Как в этом случае правильно выделать 1 Gb памяти и потом манипулировать этим массивом? Это получается мне нужно "дробить" 1 структуру на 2 и 1 массив на 2 массива и потом распределять память между этими массивами? Но у меня размер массивов всегда будет постепенно увеличиваться, а следовательно - потребуется больше оперативной памяти под все это добро...
0
|
||
|
|
|||
| 26.03.2011, 13:37 | |||
|
1
|
|||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
||
| 26.03.2011, 13:44 | ||
|
Добавлено через 1 минуту Я это к чему. Даже если новичек задающий вопрос не заострит внимания на каких-либо тонкостях, то это не значит, что можно бросать слова на ветер.
0
|
||
|
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12
|
||
| 26.03.2011, 13:45 [ТС] | ||
![]() Большое спасибо за ответы и советы, придется работать именно так. Но если у кого-то есть более интересный вариант решения данной проблемы - я буду очень рад, если Вы наставите newbie на путь истинный ![]() Спасибо еще раз
0
|
||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
| 26.03.2011, 13:58 | |
|
Evg
я же уже написал! что есть модификация оператора new - placement new. Память под который подаешь ты сам (хоть тем же malloc-ом выдели, хоть со стека кусок). И я знаю, что подавать надо буфер размером sizeof класса, не больше не меньше! То есть никакой дополнительной информации о классе не надо. Обычный new, естественно, еще выделяет несколько байт, чтоб запомнить размер буфера. Т.е. он ничем не хуже malloc-а. Теперь понятно?
0
|
|
|
|
|
| 26.03.2011, 14:08 | |
|
slice, я тебя не просил доказывать, что new ничем не хуже malloc'а (да я и не утверждал обратного). Я тебя просил доказать, что использование new рациональнее, чем malloc. Ибо я утверждал, что верно обратное, после чего ты начал выступать про "бросать слова на ветер"
Добавлено через 2 минуты Ну и так, на всякий случай. Речь шла о выделении памяти, а placement new не занимается выделением памяти
0
|
|
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
||||
| 26.03.2011, 14:25 | ||||
|
Тогда что ты имел ввиду здесь?
0
|
||||
|
|
||
| 26.03.2011, 14:37 | ||
|
К чему был вспомнен placement new в теме про динамическое выделение памяти - я не знаю.
0
|
||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
||
| 26.03.2011, 14:57 | ||
|
В прочем, ты можешь продолжать считать, что разработчики С++ идиоты, обожающие сорить памятью. Главное, не пытайся убедить в этом других.
0
|
||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
|
| 26.03.2011, 16:00 | |
|
вот и договорились =)
Добавлено через 1 минуту Кстати вчера у меня была репутация минус 29, а сейчас уже минус 25. Возможно, модераторы повысили ее за мой интелектуальный вклад в развитие форума. И наиболее вероятно за этот топик.
0
|
|
| 26.03.2011, 16:10 | |
|
1
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
| 26.03.2011, 16:16 | |
|
0
|
|
|
|
||
| 26.03.2011, 16:20 | ||
|
Добавлено через 1 минуту С учётом того, что в Си++ нет встроенного аналога для realloc'а, использование malloc'а зачастую остаётся единственным вразумительным способом
1
|
||
|
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
|
||
| 26.03.2011, 16:26 | ||
|
0
|
||
| 26.03.2011, 16:26 | |
|
Помогаю со студенческими работами здесь
20
Как удалить элемент из массива и сжать его (без динамического выделения памяти)? Сумма элементов первой и последней строчки матрицы с использованием динамического выделения памяти
Функция динамического выделения памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|