webForumDet fria alternativet

malloc() vs char[]

C/C++

1 svar · 445 visningar · startad av Ramzeus

Medlem sedan mars 200642 inlägg
Frågan#1

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?

Medlem sedan feb. 20002 300 inlägg
#2

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.

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)