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

Операторы динамического выделения памяти - new/delete - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выделение памяти http://www.cyberforum.ru/cpp-beginners/thread264315.html
Не знаю как точно сформулировать вопрос. Где можно прочитать о принципах выделения, считывания, записи и распределения памяти в кэше, стэке, куче. Как раздаются адресса, про то что память выделяется...
C++ Длинная арифметика Мне дали задание с вычеслениями длинной арифметики. С мысл в том что там все действия происходят с символьными масивами. Я так и не разобрался как это всё работает. Обьясните. http://www.cyberforum.ru/cpp-beginners/thread264314.html
C++ Построить абстрактный класс
Никак не успеваю с лабораторными, помогите пожалуйста. Построить абстрактный класс Locate, описывающий позицию на экране, и производные классы Figure и Text, описания некоторых фигуру и текст....
C++ C++/ Оператор for
1. Посчитать суму чисел от 100 до 200 которые кратные 17 2. Каждые 3 часа амёба надвое, посчитать сколько будет амёб будет через 120 часов
C++ Определить процедуры выполнения арифметических операций над комплексными числами http://www.cyberforum.ru/cpp-beginners/thread264275.html
Добрый день. Помогите пожалуйста решить задачу на си. Тема:Программирование задач с использованием нескольких функций на языке Си. Даны действительные числа u1, u2, v1, v2, w1, w2. ...
C++ Cетевая игра "крестики-нолики" Помогите, на курсовой задали, сделать сетевую игру крестики-нолики в консоли, нужно сделать сервер и клиенты. Там необходимо создать библиотеки у меня уже почти все готовы только как все это собрать... подробнее

Показать сообщение отдельно
KBEPTMEH
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 12

Операторы динамического выделения памяти - new/delete - C++

26.03.2011, 13:02. Просмотров 5216. Ответов 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 и более), а именно - создать массив типа структура.

Мое решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Общий размер структуры = 20 Байт */
struct my_struct 
{
  long int f0;
  long int f1;
  long int f2;
  long int f3;
  long int f4;
}
 
my_struct *p_my_array;
 
/* Пытаюсь выделать 20 * 30000000 Байт */
try 
{
  p_my_array = new my_struct[30000000];  
} catch (bad_alloc) { /* Обработка исключения в случае неудачи при выделении памяти */ }
 
/*
...
Ряд действий
...
*/
 
delete [] p_my_array;
Проблема
Ни на одном из трех указанных выше ПК - не получается выделить объем памяти более 512 МБайт.
В момент попытки динамического выделения памяти - ОС и все запущенное ПО потребляет не более 700 МБайт.
То есть всегда свободно достаточное количество памяти, чтобы можно было ею воспользоваться.
(В приведенном примере производится попытка выделения памяти объемом больше 512 МБайт).

Вопрос
1. Возможно ли вообще выделать больше 512 Мбайт памяти динамически или нет?
2. Можно ли заставить программу "кушать" всю свободную оперативную память и соответственно манипулировать всей свободной оперативной памятью в системе? (К примеру 8 Gb RAM).
3. На сколько я знаю, в С++ рациональнее пользоваться операторами new/delete, вместо функций malloc()/free(). Это правда?

Пост Скриптум
Не спрашивайте зачем так много программе нужно оперативки. Просто нужно

Всем заранее спасибо за Ваши ответы и подсказки.
С уважением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru