Недавно я узнал, что целое число занимает 4 байта из памяти.
Сначала запустил этот код и измерил использование памяти:
int main()
{
int *pointer;
}
- Требуется 144 КБ.
Затем я изменил код, чтобы выделить 1000 целых переменных.
int main()
{
int *pointer;
for (int n=0; n < 1000; n++)
{
pointer = new int ;
}
}
- Затем потребовалось (168-144 =) 24 КБ
, но предполагается, что 1000 целых чисел занимают (4 байта x 1000 =) 3,9 КБ.
Затем я решил сделать 262,144 целых переменных, которые должны потреблять 1 МБ памяти.
int main()
{
int *pointer;
for (int n=0; n < 262144; n++)
{
pointer = new int ;
}
}
Удивительно, теперь требуется 8 МБ
Использование памяти, экспоненциально растет в соответствии с количеством целых чисел.
Почему это происходит?
Я нахожусь на Kubuntu 13.04 (amd64)
Пожалуйста, дайте мне небольшое объяснение.
Спасибо!
ПРИМЕЧАНИЕ: sizeof(integer)
возвращает 4