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

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

Восстановить пароль Регистрация
 
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 3
Регистрация: 08.08.2009
Сообщений: 1,126
27.09.2010, 17:50     Выделение памяти #1
Эта программа должна забрать у системы 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++
C++ Распределение памяти. Динамическое выделение памяти
Выделение памяти C++
Выделение памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Black Fregat
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
27.09.2010, 18:28     Выделение памяти #2
Выравнивание?

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

Добавлено через 1 минуту
Плюс там еще наверняка создаются структуры управления памятью для каждого выделенного блока
RNT
Автор FAQ
 Аватар для RNT
3131 / 351 / 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
 Аватар для Black Fregat
1353 / 983 / 215
Регистрация: 31.05.2009
Сообщений: 4,093
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
Yandex
Объявления
28.09.2010, 00:36     Выделение памяти
Ответ Создать тему
Опции темы

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