funcao SetPixel

funcao SetPixel

por Thais André -
Número de respostas: 5

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? 

Em resposta à Thais André

Re: funcao SetPixel

por Thais André -

descarte a pergunta. acabei de descobrir o erro.

Em resposta à Thais André

Re: funcao SetPixel

por José Coelho de Pina -

Oi Thais,

Qual era o problema? É fácil descrever?

Em resposta à José Coelho de Pina

Re: funcao SetPixel

por Thais André -

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


 

Em resposta à Thais André

Re: funcao SetPixel

por José Coelho de Pina -

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?

Em resposta à Thais André

Re: funcao SetPixel

por José Coelho de Pina -

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.