[Prévia cron] [Próxima Cron] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto] [Índice de autor]

pau em malloc



 Este problema ocorreu em meu programa e pode ser diferente de compilador
para compilador. Utilizo o Borlando c++ 4.0.
 Quando tentava alocar memoria para um numero grande de pontos no programa
ele dava pau, simplesmente fechava o compilador.
 Apesar de usar um verificador na hora de alocar memoria (!NULL), este
funcionava para uma faixa reduzida de valores, i.e. quando utilizava um
valor proximo de 8000, o verificador funcionava e emitia um aviso de
memoria insuficiente. mas com valores maiores como 10000 ele passava pelo
verificador sem emitir o aviso e dava pau.
 Debugando o programa encontrei o problema. A funcao malloc recebe o valor
em bytes que se deve alocar ( malloc (num. de bytes) ) e este num. de
bytes eh do tipo size_t. O maximo de size_t eh 64Kbytes. O problema
ocorria quando size_t ultrapassava o limite, retornando a zero. Ou seja
alocava menos memoria do que necessitava, sem dar erro pois ele pensava
estar alocando memoria suficiente.
 Acho que a explicacao dada pelo prof. em aula foi suficiente para
entender o problema. Mas se ainda assim tiver alguma duvida pode enviar um
e-mail que responderei, ok?

 Abracos,
 Leo Watanabe   <leowww@linux.ime.usp.br>