estou com o programa pronto mas nao consigo testá-lo pois minha função
setPixel sempre apresenta "EXC_BAD_ACCESS" ou, na hora de compilar, apresenta "Segmentation Fault".
o que pode ser?
descarte a pergunta. acabei de descobrir o erro.
Oi Thais,
Qual era o problema? É fácil descrever?
ola professor, na verdade era um erro na hora de alocar a memória na função criaImagem.
teria como postar o código que resolve o programa aqui no PACA pra gente comparar com o nosso código depois?
att,
thais
O programa fonte do EP2 já foi disponibilizado, mas seria legal que as pessoas postassem aqui os códigos com problemas.
Por exemplo, tem gente que fez o seguinte no main
Linha *cab; [...] cab = mallocSafe(sizeof(Linha)); leMondrian(argv[1], &altura, &largura, cab);
Aparentemente dava problema no Windows, mas não dava no linux.
O código tem de fato um erro, o certo é:
Linha *cab;
[...]
cab = mallocSafe(sizeof(Linha));
cab->prox = NULL; /* o mesmo que (*cab).prox = NULL; */
leMondrian(argv[1], &altura, &largura, cab);
como está descrito nas notas de aula (inicialização de listas encadeadas com cabeça).
Infelizmente, parece que quando a struct *cab era
alocada no Linux o campo prox estava com NULL (==0),
ou seja (*cab).prox == NULL (o mesmo que cab->prox == NULL).
Nesse caso o problema não era no Windows.
Uma inicíalização que não está especificada na linguagem mas era feita no linux,
fazia com que o programa, apesar de errado, "funcionasse". . .
Mora da história: vejam na notas de aula como deve ser feita a inicialização de uma lista
encadeada com e sem cabeça.
E ai? Mais algume tem um trecho de código para darmos uma olhada aqui?
Oi Thais,
A sua função criaImagem está alocando a matriz corretamente.
Para ver isto escreva no main
/** cria arquivo imagem im **/
im = criaImagem(altura, largura);
salvaImagem(argv[2], im);
e remova o salvaImagem do final do main. Depois de compilar
e executar o seu programa veja que ele criou uma imagem corretamente. Tem umas outras coisas,
mas a imagem esta senod criada corretamente.