[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>