malloc + Automatic Reference Counting?
Wenn ich mit malloc zusammen mit der Automatischen Referenz-Zählung, muss ich dann trotzdem noch manuell den Speicher frei?
int a[100];
int *b = malloc(sizeof(int) * 100);
free(b);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, müssen Sie code, der den Aufruf
free
selbst. Jedoch, Ihre Zeiger sind, können sich an das Referenz-counting-system indirekt wenn man es in eine Instanz der Referenz-gezählt Objekt:Gibt es keine Möglichkeit, um zu schreiben, dass der Aufruf
free
- die eine oder andere Weise müssen Sie es in Ihrem code.[obj release]
- das ist seine einzige Aufgabe. Erst beim loslassen der Ergebnisse in ref-counting unten gehen auf null, die[obj dealloc]
genannt wird.Ja. ARC gilt nur für Objective-C-Instanzen, und gilt nicht für
malloc()
undfree()
.[ClassName alloc]
.Vertex v;
keine Speicher-heap-allocation. Wie eine lokale variable, es wäre auf dem Stapel reserviert und automatisch verworfen, wenn der Umfang beendet wird. Als Teil einer anderen Struktur oder Objekt, es wäre unter den Freigabe-Regeln des enthaltenden Objekt.int[100]
wäre das kein gültiges argument zufree()
sowieso, da wäre es auf dem Stapel reserviert.In dealloc hinzufügen, wenn nicht nil ist, und weisen Sie nil für sicher. Will nicht frei null, malloc verwendet werden könnten, die außerhalb von init etc.
buf != NULL
imdealloc
. Sollten Sie nicht stattdessen prüfen, obbuf == NULL
nach dermalloc
iminit
, und wenn dem so ist, Griff der Fehler? Dann gibt es keine Notwendigkeit, um zu überprüfen, obbuf != NULL
imdealloc
, richtig? Auch, was ist der Sinn der Einstellungbuf = NULL
am Endedealloc
? Vor allem, wennbuf
ist eine private Instanz-variable, würden Sie nicht haben, etwas zu tun ziemlich komisch in Ihrem code, um Zugang zubuf
nachdealloc
genannt wird?Einige "NoCopy" Varianten von NSData kann gekoppelt werden mit einem Aufruf von malloc, die Sie freigeben, müssen Sie, um kostenlos, nichts.
NSMutableData verwendet werden kann, wie etwas höheren overhead-version von calloc liefert den Komfort und die Sicherheit des BOGENS.