Como calculo quanta RAM tenho?

Como calculo quanta RAM tenho?

Estou executando um programa C++ simples para aprender sobre memória alocada dinamicamente ( malloc, realloce free).

Aqui está um trecho do meu código:

void *p = malloc(10); // Allocates 10 bytes in memory; `p` is a pointer to the first byte.

cout << "The value of the pointer p is:      " << p << endl;

Isso gera algo assim:

The value of the pointer p is: 0x7fbf36c00080

Estou ciente de que o número hexadecimal é o local de memória apontado por p, que é o primeiro local de memória desta alocação.

Ao tentar calcular aproximadamente quanta RAM eu tenho, olhei para o número de dígitos daquele número hexadecimal (12 dígitos) e elevei 16 a essa potência.

Acontece que 16^12 é aproximadamente igual a 2,8x10^14 e como cada local de memória armazena um byte, isso significa que tenho cerca de 280 TERABYTES de RAM, mesmo sabendo que tenho 8 GB.

Onde foi que errei no meu cálculo?

Responder1

Você deve estudar o conceito de Memória virtual, para entender que a memória física é mapeada no espaço de endereço do processo.

O fato de um processo de 64 bits poder ter ponteiros indo até 2 64 -1 não significa que toda essa memória exista. O ponteiro aponta para um segmento de memória que está mapeado para a memória física em algum lugar do computador.

Somente o sistema operacional sabe quanta memória você realmente possui, então você precisa usar sua API para recuperar essa quantidade.

Conforme ilustrado em meu primeiro link da Wikipedia:

insira a descrição da imagem aqui

informação relacionada