Es wird am Ende der Funktion freigegeben, aber da Sie alloca()
in der Schleife aufrufen, erhalten Sie wahrscheinlich einen Stapelüberlauf. Wenn sich size
innerhalb der Funktion nicht ändert, sollten Sie alloca()
vor der Schleife aufrufen.
Der mit alloca()
zugewiesene Speicher wird freigegeben, wenn die Funktion beendet wird. Weitere Informationen finden Sie beispielsweise auf der Manpage .
In Bezug auf den ersten Fall, nur einer Auto-Variablen im Bereich, bin ich nicht sicher, wie Sie definieren würden, dass es "befreit" wird. Sie können es nicht außerhalb des Bereichs referenzieren, der es definiert, und wenn es einen Initialisierer hätte, würde es bei jeder Iteration neu initialisiert werden.
Tags und Links c stack allocation