Alocação de memória do C ++ no Ubuntu

0

Primeiramente, desculpe se a pergunta não pertence aqui. Eu quero ter certeza se esse problema tem que fazer alguma coisa com o meu Ubuntu.

O código C ++ abaixo faz 2621440 variáveis inteiras. Cada inteiro requer 4 bytes da memória . Então, 2621440 inteiros receberiam (2621440 * 4 =) 10MB da memória virtual.

O problema que estou tendo é, este programa ocupa quase 80MB de memória, sem nenhum motivo.
Eu monitorei o uso de memória do System Monitor e do top comando também.

int main()
{
int *p;
for (int n=0; n < 2621440 ; n++)
{ p = new int ; }
}

Estou no Kubuntu 13.04 (amd64)
Por favor, me dê uma pequena explicação.
Obrigado!

    
por Naveen 17.05.2013 / 05:38

1 resposta

1

Cada inteiro requer 32 bits da memória .

4 bytes = 4 * 8 bits = 4 bytes, então 2621440 inteiros receberão (2621440 * 4 * 8) bits = (2621440 * 4) bytes = 80 megabits (Mb) = 10 megabytes (MB).

Acho que você faz uma confusão entre megabits (Mb) e megabytes (MB): 8 megabits (Mb) = 1 megabytes (MB).

    
por Radu Rădeanu 17.05.2013 / 07:58