Sem memória Problema

0

Estou executando um programa C ++ no Ubuntu 10.04 (arquitetura de sistema de 32 bits). Se eu calcular a quantidade de memória que meu programa usa, chega a 800MB. Eu tenho uma memória RAM de 4GB no lugar. Mas ainda antes do programa terminar, ele lança uma exceção de memória. Por que isso está acontecendo? É por causa da estrutura da memória ou problemas de implementação ou o que poderia possivelmente acionar esse problema? Eu já tinha visto esse problema várias vezes antes, mas nunca entendi a razão por trás disso. Algum de vocês já lidou com esse caso antes?

Atualização:

O programa que estou tentando executar é aqui com explicações. Para aumentar a quantidade de memória que utilizo, apenas faço o empuxo do valor de max_i na função principal.

    
por aruva arumugam 28.02.2011 / 05:50

2 respostas

0

Coisas que podem dar errado:

  • O sistema não é capaz de lhe dar X bytes de memória contígua. Vamos dizer que você quer um bloco de 512MB, mas o sistema não é capaz de encontrar um bloco tão grande e contuso. Então você está sem sorte e receberá uma exceção "sem memória"

  • Você calcula mal a quantidade de memória que seu programa realmente precisa. Você libera memória não utilizada? Você calculou a sobrecarga para algumas estruturas (alinhamento de palavras-chave) corretamente?

  • Você tem um arquivo swap grande o suficiente para que o sistema possa trocar outros processos?

por 28.02.2011 / 06:13
0

Precisamos de mais informações. Parece que você está fazendo um experimento que é legal, mas o que o programa realmente faz?

Você está alocando milhares de pequenos pedaços de memória ou alguns grandes pedaços contínuos, etc ...

A questão é vizinha da adequação do stackoverflow IMO.

Como os outros caras sugerem que você está em um ambiente de 32 bits e seu processo pode estar se esforçando para alocar um grande pedaço em um único hit. Mas estou apenas especulando sem mais detalhes.

    
por 01.03.2011 / 09:48