• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nram

malloc e arrays

4 mensagens neste tópico

Boas,

Quero fazer um malloc a um array bidimensional, mas o problema é que sei que o código está correcto, ou parcialmente correcto, mas só funciona se estiver na função main, caso eu faça numa outra função não compila.

Erro de compilação:

display.c:56: error: two or more data types in declaration specifiers

display.c:56: error: function definition declared ‘typedef’

display.c: In function ‘mapUP’:

display.c:59: error: incompatible types in return

display.c:62: error: incompatible types in return

display.c:64: error: incompatible types in return

display.c:65: warning: control reaches end of non-void function

xx@Lxxx:~/Documents/UM/LI2/Rascunho$

Código:

typedef char AREA;

AREA **mapp;

int mapUP(void){
int i;
mapp = (AREA **) malloc(maxX * sizeof (AREA *));
for (i=0;i<maxX;i++){
	mapp[i] = (AREA *) malloc(maxY * sizeof(AREA));
}
return 0;
}

PS: Também reparei que o malloc faz a "segunda" coordenada infinita.... Não percebo pk... Se eu fizer um ciclo para imprimir, se passar a primeira coordenada ele dá segmentation fault como era de esperar, mas o da segunda é até acabar a memória.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Descobri o raio do problema por acaso....

Esquecime de meter ; depois de uma das structs... :| ... por acaso tive que ir modificar umas coisas e pronto... :|| ...

Agora alguém me explica porque é que ele cria é mapp[correcto][iNFINITOOOOOOOO] ???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora