Pytania otagowane jako free

17
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 wykonania wątku, bardzo ważne jest zwolnienie, aby nie było …
538 c  malloc  free 

11
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, aby znać rozmiar tablicy), ale nie muszę przekazywać …
384 c  size  pointers  free 

13
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 << p; return 0; } Byłbym naprawdę wdzięczny, gdyby odpowiedź była dogłębnie …

23
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, ustawienie na NULLnie …

10
Czy free (ptr), gdzie ptr to NULL uszkodzona pamięć?
Teoretycznie mogę to powiedzieć free(ptr); free(ptr); to uszkodzenie pamięci, ponieważ zwalniamy pamięć, która została już zwolniona. Ale co gdyby free(ptr); ptr=NULL; free(ptr); Ponieważ system operacyjny będzie zachowywał się w nieokreślony sposób, nie mogę uzyskać faktycznej teoretycznej analizy tego, co się dzieje. Cokolwiek robię, czy to uszkodzenie pamięci, czy nie? Czy …

8
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ć?
92 c++  c  debugging  free 


3
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 mojego rozumienia C wydaje się to nie mieć sensu z dwóch powodów: Funkcja …
82 c  casting  free  void  legacy-code 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.