Acredito que você está criando uma variavel do tipo Imagem e retornando seu endereço. Se for isso essa variável será "eliminada" ao final da função, ou seja, a função retornará endereço para lixo e isso vai dar problema.
Para criar uma estrutura que não será destruida ao final de uma função criamos um ponteiro e então alocamos memória para esse ponteiro. No final da função o ponteiro será destruído mas não a memória alocada, essa memória nós retornamos na função (claro que se não retornarmos esse espaço de memória ele estará desreferenciado e então não conseguiremos acessá-lo, ele será pior que inútil por não ser acessável, pois estará ocupando nossa valiosa memória).
Legal! Só complementando.
function returns adress of local variable
Nas anotações da aula 9, logo no ínicio, há duas implementações erradas.
Numa delas é exatamente este o problema.
Por isso que eu estava sentindo que tinha visto esse erro em algum lugar.