A fragmentação também ocorre na memória do sistema (RAM). Os processos do aplicativo e do sistema alocam e usam memória em blocos não contíguos, à medida que os registradores de memória existentes são usados e reutilizados.
O Ram pode ficar fragmentado?
Paging de memória cria fragmentação interna porque um quadro de página inteiro será alocado, independentemente de muito armazenamento ser necessário ou não. Devido às regras que regem a alocação de memória, às vezes é alocada mais memória do computador do que o necessário.
O que causa a fragmentação da memória?
Fragmentação de memória é quando a maior parte de sua memória é alocada em um grande número de blocos não contíguos, ou pedaços - deixando uma boa porcentagem de sua memória total não alocada, mas inutilizável para os cenários mais típicos. Isso resulta em exceções de f alta de memória ou erros de alocação (ou seja, malloc retorna nulo).
A fragmentação da memória é ruim?
Na programação geral em c++ não há problema com fragmentação de memória. Você sempre vê a memória virtual e sempre aloca blocos de memória virtual contíguos. A única coisa que você pode notar é que os pedaços alocados sequencialmente não são necessariamente adjacentes na memória.
Como você evita a fragmentação da memória?
Se você pode isolar exatamente aqueles lugares onde você provavelmente alocará blocos grandes, você pode (no Windows) diretamente chamar VirtualAlloc em vez de passar pelo gerenciador de memória. Isso evitaráfragmentação dentro do gerenciador de memória normal.