Als «free» getaggte Fragen

538
Was passiert WIRKLICH, wenn Sie nach malloc nicht frei sind?

Das hat mich schon seit Ewigkeiten gestört. In der Schule wird uns allen beigebracht (zumindest war ich das), dass Sie jeden zugewiesenen Zeiger freigeben MÜSSEN. Ich bin allerdings etwas neugierig auf die tatsächlichen Kosten, die entstehen, wenn kein Speicher freigegeben wird. In einigen...

385
Woher weiß frei, wie viel frei ist?

In der C-Programmierung können Sie jede Art von Zeiger, die Sie möchten, als Argument an free übergeben. Woher weiß es, wie groß der zugewiesene Speicher ist, der freigegeben werden soll? Immer wenn ich einen Zeiger auf eine Funktion übergebe, muss ich auch die Größe übergeben (dh ein Array von 10...

276
Wie funktionieren malloc () und free ()?

Ich möchte wissen wie mallocund freearbeiten. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout...

156
Setzen der Variablen nach free auf NULL

In meiner Firma gibt es eine Codierungsregel, die besagt, dass die Variable nach dem Freigeben von Speicher auf zurückgesetzt wird NULL. Zum Beispiel ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Ich habe das Gefühl, dass in Fällen wie dem...

92
So finden Sie einen Fehler "Double Free oder Korruption"

Wenn ich mein (C ++) Programm ausführe, stürzt es mit diesem Fehler ab. * glibc erkannt * ./load: doppelt frei oder beschädigt (! prev): 0x0000000000c6ed50 *** Wie kann ich den Fehler aufspüren? Ich habe versucht, print ( std::cout) -Anweisungen zu verwenden, ohne Erfolg. Könnte gdbdas einfacher...

86
atomare Betriebskosten

Was kostet die atomare Operation (Vergleich und Austausch oder atomares Addieren / Dekrementieren)? Wie viel Zyklen verbraucht es? Wird es andere Prozessoren auf SMP oder NUMA anhalten oder Speicherzugriffe blockieren? Wird der Nachbestellungspuffer in einer außer Betrieb befindlichen CPU...

82
Warum den Rückgabewert von free auf void setzen?

Ich lese ein Buch ( Programmieren mit POSIX-Threads von Butenhof, 1997), das C verwendet, und bin auf die folgende Zeile gestoßen: (void)free(data); Hier dataist nur ein Zeiger auf eine zugewiesene Struktur, data = malloc(sizeof(my_struct_t)); Warum ist das Ergebnis der freeBesetzung void? Nach...

73
Rundsperrfreier Puffer

Ich bin dabei, ein System zu entwerfen, das eine Verbindung zu einem oder mehreren Datenfeeds herstellt und eine Analyse der Daten durchführt, um Ereignisse basierend auf dem Ergebnis auszulösen. In einem typischen Multithread-Producer / Consumer-Setup werden mehrere Producer-Threads Daten in eine...