Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 23:58   #1
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
Вопрос Определить размер массива в памяти

Код:
int sizeA;
class test
{
public:
        int *a;
        test()
	{
	a=new int[sizeA] ;
	}

	~test()
 	         {
	         delete [] a;
	         }
		
};

int main()
	{
	  sizeA=5;
	  int size=1000000;
	  test *mass;
               mass=new test[size];
  cout<<((sizeof(test) + sizeof(int)*sizeA) * size) /1024<<" КБ";
	}
Доброго времени суток!
Требуется определить сколько места в памяти занимает массив mass.
Подскажите что здесь не так? почему получается 23437 кб, а в памяти процесс занимает 30304 кб?
P.C
компилятор g++, ОС ubuntu 10.10

Последний раз редактировалось WOWka777; 16.02.2011 в 19:43. Причина: забыл написать создание массива
WOWka777 вне форума Ответить с цитированием
Старый 16.02.2011, 02:33   #2
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

что за 1000000?
откуда ты взял 30304?
sizeof(test) = 4
izeof(int)*sizeA = 20
24 * 1000000 / 1024 = 23437.5
что ты хочешь чтобы он печатал?
Акоб вне форума Ответить с цитированием
Старый 16.02.2011, 03:40   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

sizeof(mass)/sizeof(int)
или, если там гарантированно есть хотя бы 1 элемент, sizeof(mass)/sizeof(mass[0])

тьфу, название темы прочитал не так. sizeof(mass) даёт значение в байтах.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 16.02.2011 в 04:11.
Obey-Kun вне форума Ответить с цитированием
Старый 16.02.2011, 07:59   #4
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
По умолчанию

Цитата:
что за 1000000?
просто для примера написал
Цитата:
откуда ты взял 30304?
в системном мониторе написано
Цитата:
что ты хочешь чтобы он печатал?
хочу что бы он печатал размер массива в килобайтах.
WOWka777 вне форума Ответить с цитированием
Старый 16.02.2011, 13:18   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Так толком и не разобрался в ваших загадочных конструкциях, но точно могу сказать, что mass - это указатель, а объектов типа test вообще нигде не создается.
Лучше всего объясните "для тупых", что вы хотели сделать в этой задачке (с классами поработать, с sizeof или еще с чем), что такое по вашей задумке test ну и т.д.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 16.02.2011, 16:38   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Подскажите что здесь не так? почему получается 23437 кб, а в памяти процесс занимает 30304 кб?
а вы думаете что ваш процесс это только тот массив?
учтите сам код, да и скорее всего еще выравнивания данных.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.02.2011, 19:48   #7
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
По умолчанию

Цитата:
Так толком и не разобрался в ваших загадочных конструкциях, но точно могу сказать, что mass - это указатель, а объектов типа test вообще нигде не создается.
Лучше всего объясните "для тупых", что вы хотели сделать в этой задачке (с классами поработать, с sizeof или еще с чем), что такое по вашей задумке test ну и т.д.
Не правильно сформулировал вопрос, запутался совсем. Извеняюсь.
Короче говоря, мне нужно определить сколько элементов типа test можно хранить в оперативке. как это можно сделать?
WOWka777 вне форума Ответить с цитированием
Старый 17.02.2011, 03:44   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Добавлять эл-ты, проверяя каждый раз свободную память.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 17.02.2011, 13:03   #9
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
По умолчанию

Цитата:
Добавлять эл-ты, проверяя каждый раз свободную память
помоему это не очень хорошо А другого способа нет?
WOWka777 вне форума Ответить с цитированием
Старый 17.02.2011, 14:53   #10
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

ловить исключения от new, но это тоже не очень хорошо.
Д_М вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер памяти процесса ZaRDaK Общие вопросы Delphi 5 25.09.2010 23:48
размер памяти видеокарты в BIOS CyberGenus Компьютерное железо 6 15.03.2010 08:14
Максимальный размер занимаемой памяти Alex Cones Общие вопросы Delphi 8 06.05.2009 22:37
Размер доступной оперативной памяти xakzona Win Api 1 27.02.2009 12:25