mcosta Posted April 23, 2012 at 04:08 PM Report #450784 Posted April 23, 2012 at 04:08 PM Olá pessoal tudo bem?? eu na teoria sei o que é o malloc mas na prtácia não entendo muito bem... é assim, eu tenho o exercicio resolvido em duas formas...era de chamar uma função: a primeira é assim: char* verifica (int num) { char* pStr; pStr=malloc(20); if(num>=5) { if (num<=7) strcpy(pStr,"infantil A"); if (num>=8 && num<=10) strcpy (pStr,"infantil B"); outra versão é assim: char* verifica (int num) { static char * infantil = "infantil A"; static char * infantil1 = "infantil B"; static char * juvenil = "juvenil A"; static char * juvenil1 = "juvenil B"; static char * adulto = "Adulto"; static char * erro = "erro ao inserir numero"; if (num>=5) { if (num <= 7) return infantil; if(num>=8 && num<=10) return infantil1; Qual é a diferença entre um e o outro?? cumprimentos e obrigados
HappyHippyHippo Posted April 23, 2012 at 04:27 PM Report #450789 Posted April 23, 2012 at 04:27 PM a diferença está que na primeira solução necessitas de fazer free() do resultado quando não necessitas IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
mcosta Posted April 23, 2012 at 04:34 PM Author Report #450792 Posted April 23, 2012 at 04:34 PM mas eu nao estou a fazer o free.. esta mal??
HappyHippyHippo Posted April 23, 2012 at 04:37 PM Report #450794 Posted April 23, 2012 at 04:37 PM em prática sim/não : a memória será libertada no momento que a aplicação fechar em teoria sim : estas a criar um memory-leak que pode levar a um erro de falta de memória IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Baderous Posted April 23, 2012 at 05:00 PM Report #450805 Posted April 23, 2012 at 05:00 PM Para além disso, no 2º exemplo as strings são imutáveis (são literais), enquanto que no caso do malloc não.
mcosta Posted April 23, 2012 at 09:08 PM Author Report #450981 Posted April 23, 2012 at 09:08 PM ok!! muito obrigado...
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