Sobre alocação dinâmica com matriz.

Sobre alocação dinâmica com matriz.

por Renan Fichberg -
Número de respostas: 4

Olá, estou fazendo o EP2 e estou com uma dúvida.

Criei uma matriz "A" do tipo float na função *criaImagem e um objeto do tipo Imagem [da struct] "imgStruct". Usei o código de alocação dinâmica de matriz que está na página do curso mesmo para alocar o espaço desta matriz A e em seguida igualei

imgStruct.pixel = A;

(Lembrando que "pixel" é um campo da Struct "Imagem", fornecida no esqueleto)

 

Fiz isso acreditando que agora "imgStruct" teria o mesmo endereço de memória de A, e portanto estaria tmb alocada. Isso procede?

Em resposta à Renan Fichberg

Re: Sobre alocação dinâmica com matriz.

por José Coelho de Pina -
Legal!

A função criaImagem é do tipo Imagem *.
Assim, deve retornar um ponteiro para (endereço de) um objeto do tipo Imagem.
Assim, nessa função você deve declarar um ponteiro

 Imagem *imagem;
e alocar dinamicamente uma estrutura do tipo Imagem.
O campo pixel da estrutura será o ponteiro para a matriz que deverá
ser alocada dinâmicamente como está nas notas de aula. Se o ponteiro para
a matriz que você alocou dinamicamente é A, então você deve fazer:
imagem->pixel = A; 
Em resposta à José Coelho de Pina

Re: Sobre alocação dinâmica com matriz.

por Renan Fichberg -

Opa, calma aí. Então são duas alocações? Uma para a estrutura e uma para a matriz [contida na estrutura]?

Em resposta à Renan Fichberg

Re: Sobre alocação dinâmica com matriz.

por José Coelho de Pina -
Sim. Você deve
  1. alocar objeto do tipo Celula.
  2. alocar matriz.
  3. atribuir endereço da matriz para campo pixel do objeto.

Hmmm. Dependendo de como você faz 1 e 2 são comutativos