RamzeusMedlem sedan mars 200640 inlägg
Jag håller på att skriva en del av en TCP/IP-server under Linux.
I många av mina rutiner så behandlar jag strängar. T.ex så validerar jag inkommande data och vidtar olika åtgärder beroende på vad det står.
Min fråga är: Vilket sätt är bäst om man ska skapa en ny minnesarea som ska hålla en temporär sträng?
Är det char *strTemp = malloc(SIZE);
eller är det char strTemp;
Är det någon av metoderna som anses säkrare, snabbare eller kanske snyggare?
PhorpherMedlem sedan feb. 20002 059 inlägg
Ramzeus skrev:
Jag håller på att skriva en del av en TCP/IP-server under Linux.
I många av mina rutiner så behandlar jag strängar. T.ex så validerar jag inkommande data och vidtar olika åtgärder beroende på vad det står.
Min fråga är: Vilket sätt är bäst om man ska skapa en ny minnesarea som ska hålla en temporär sträng?
Är det char *strTemp = malloc(SIZE);
eller är det char strTemp;
Är det någon av metoderna som anses säkrare, snabbare eller kanske snyggare?
En minnesallokering mha. malloc allokerar minne på heapen. Minne du själv måste hålla koll på och avallokera när du slutar använda det. Med den andra metoden allokeras minnet på stacken och du behöver inte avallokera minnet.
Om du i förväg vet hur stor strängen är så borde en char strTemp vara rätt. Har du lite minne tillhands och har en variabel storlek på strängen så kan en malloc vara bättre. Det tar dock längre tid att allokera minne mha. malloc.