nram Posted May 14, 2009 at 07:57 AM Report #264030 Posted May 14, 2009 at 07:57 AM 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.
OldCoder Posted May 14, 2009 at 09:07 AM Report #264039 Posted May 14, 2009 at 09:07 AM Só por curiosidade, estás a incluir stdlib.h?
nram Posted May 14, 2009 at 09:09 AM Author Report #264040 Posted May 14, 2009 at 09:09 AM claro que sim
nram Posted May 14, 2009 at 11:15 AM Author Report #264101 Posted May 14, 2009 at 11:15 AM 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] ???
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now