Pytania oznaczone «free»

538
Co NAPRAWDĘ dzieje się, gdy nie zwalniasz po Malloc?

To mnie martwiło od wieków. Wszyscy uczymy się w szkole (przynajmniej ja byłem), że MUSISZ uwolnić każdy przydzielony wskaźnik. Jestem jednak trochę ciekawy, jakie są rzeczywiste koszty nie zwalniania pamięci. W niektórych oczywistych przypadkach, takich jak mallocwywołanie w pętli lub części...

384
Skąd darmo wie, ile kosztuje?

W programowaniu C możesz przekazać dowolny wskaźnik, który ci się podoba, jako argument do zwolnienia, skąd on zna wielkość przydzielonej pamięci do zwolnienia? Ilekroć przekazuję wskaźnik do jakiejś funkcji, muszę również przekazać rozmiar (tj. Tablica 10 elementów musi otrzymać 10 jako parametr,...

276
Jak działają malloc () i free ()?

Chcę wiedzieć jak malloci freepracować. 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
Ustawienie zmiennej na NULL po zwolnieniu

W mojej firmie obowiązuje zasada kodowania, która mówi, że po zwolnieniu pamięci należy zresetować zmienną do NULL. Na przykład ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Czuję, że w przypadkach takich jak w kodzie pokazanym powyżej,...

92
Jak wyśledzić błąd „podwójne zwolnienie lub korupcja”

Kiedy uruchamiam mój program (C ++), zawiesza się i wyświetla ten błąd. * wykryto glibc * ./load: podwójne zwolnienie lub uszkodzenie (! prev): 0x0000000000c6ed50 *** Jak mogę wyśledzić błąd? Próbowałem użyć std::coutinstrukcji print ( ), ale bez powodzenia. Czy mogłoby gdbto ułatwić?...

91
koszt operacji atomowych

Jaki jest koszt operacji atomowej (dowolnej z opcji porównania i zamiany lub atomowego dodawania / zmniejszania)? Ile cykli zużywa? Czy wstrzyma inne procesory na SMP lub NUMA, czy też zablokuje dostęp do pamięci? Czy opróżni bufor zmiany kolejności w niesprawnym procesorze? Jakie efekty...

82
Po co odrzucać wartość zwrotną free?

Czytam książkę ( Programowanie z wątkami POSIX autorstwa Butenhof, 1997), która używa C, i natrafiłem na następujący wiersz: (void)free(data); Tutaj datajest tylko wskaźnikiem do przydzielonej struktury, data = malloc(sizeof(my_struct_t)); Dlaczego jest wynikiem freejest wrzucony do void? Z...