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

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

Войти
Регистрация
Восстановить пароль
 
RNT
Автор FAQ
3134 / 354 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
#1

Выделение памяти - C++

27.09.2010, 17:50. Просмотров 655. Ответов 3
Метки нет (Все метки)

Эта программа должна забрать у системы 10 МБ, но диспетчер задач показывает, что программа забирает 163 МБ. Почему ?

C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
 
int main()
{
    cin.get(); //ожидание подтверждения
    for(unsigned long i=0; i<10485760; i++) //выделение 10 МБ
        new char;
    cin.get(); //чтобы окно программы не закрылось
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2010, 17:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти (C++):

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти... - C++
Вот решил себе ликбез устроить и возникли вопросы: 1) Почему char* p = &quot;fffff&quot;; не реагирует на delete p 2) Когда надо...

Выделение памяти - C++
Доброго времени суток. Чтобы выделить память под двумерный массив в такой форме: //n - переменная, M - константа arr = new double...

Выделение памяти - C++
Здравствуйте! #include&lt;iostream&gt; int main() { int *mass = new int ; int *mass2 = new int ; std::cout &lt;&lt; (unsigned int)mass &lt;&lt;...

Выделение памяти - C++
Часто возникает такая проблема, когда конфигурирую проект как Release происходит ошибка выделения памяти (при вызывании new), например...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Black Fregat
1381 / 1011 / 222
Регистрация: 31.05.2009
Сообщений: 4,240
27.09.2010, 18:28 #2
Выравнивание?

Попробуйте напечатать разность между соседними new char - многое сразу станет ясно

Добавлено через 1 минуту
Плюс там еще наверняка создаются структуры управления памятью для каждого выделенного блока
RNT
Автор FAQ
3134 / 354 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
27.09.2010, 19:27  [ТС] #3
Цитата Сообщение от Black Fregat Посмотреть сообщение
Выравнивание?
Не понял. Какое выравнивание ?

Цитата Сообщение от Black Fregat Посмотреть сообщение
Попробуйте напечатать разность между соседними new char - многое сразу станет ясно
Такой код выводит -120
C++
1
cout<< (new char)-(new char)<<endl;
Не сходится. 163 МБ/10 МБ = 16,3
Но 16,3 != 120
Black Fregat
1381 / 1011 / 222
Регистрация: 31.05.2009
Сообщений: 4,240
28.09.2010, 00:36 #4
У меня получился переменный шаг, но большая часть промежутков - 16. Так что близко:
Код
1 x 256
16 x 8387677
172 x 1
16 x 4085
20 x 1
16 x 2093996
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2010, 00:36
Привет! Вот еще темы с ответами:

Выделение памяти - C++
Доброго всем вечера. В книжке нашел задание: определить класс, представляющий стек. Сделал так, что при заполнении всего стека,...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...

выделение памяти - C++
есть класс множество. необходимо создать класс &quot;правило&quot;, одним из методов которого является добавление множества к соответствующему списку...

Выделение памяти - C++
int main() { FILE *fIn = NULL, *fOut =NULL; Error EMyError; CNodeStack *Start; CNodeStack *ListF = new CNodeStack; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.09.2010, 00:36
Ответ Создать тему
Опции темы

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