Dynamiczne zarządzanie pamięcią.

0

Zwracam się do was z następującym pytaniem: Jeśli allokuje pamięć dynamicznie(malloc) dostaje wskaźnik na komórki któe zawierają co? Przypadkowe dane używane wcześniej przez system? Mniemam że pamięc którą dostaje nie jest w żadne sposób inicjalizowana. Więc jeśli tworzę wskaźnik i przyznaje mu pamięć to wskazuje on na przypadkowe dane?
Druga rzecz: jeśli zwolnie wskaźnik to dane zostaną pod tym adresem tylko system będzie wiedział zę ten blok może znowu zaalokować innemu procesowi???
Czyli jeśli zwolnię wskaźnik do char który wskazywał na łańcuch "masło" to trace wskaźnik i komputer może tą pamięć używaną przez łańcuch znowu zaalokować ale nie wymazuje danych, prawda? I masło wciąż istnieje???
Jeśli zatem zwolnie wskażnik na blok o rozmiarze x i potem od razu zaalokuje blok tego samego rozmiaru X to może tak się stać że wskaże mi znowu na "masło"?

1
  1. smieci
  2. dane zostaja
1
  1. Tak, przypadkowe dane
  2. Tak, dane tam zostają.
  3. Tak, możesz dostać ten sam blok.
1

Przypadkowe dane używane wcześniej przez system?

Tak - otrzymujesz wskaźnik na jakąś wolną część pamięci, niekoniecznie wyzerowaną (w Pascalu na przykład jest za to funkcja AllocMem, która już sama w sobie dodatkowo zeruje zaalokowaną pamięć, ale to tak swoją drogą).

Więc jeśli tworzę wskaźnik i przyznaje mu pamięć to wskazuje on na przypadkowe dane?

"przypadkowe dane" w rozumieniu tych danych, które znajdują się pod wskaźnikiem - tak.
Natomiast sam adres wskaźnika nie jest pod żadnym pozorem przypadkowy.

jeśli zwolnie wskaźnik to dane zostaną pod tym adresem tylko system będzie wiedział zę ten blok może znowu zaalokować innemu procesowi?

Tak.

Czyli jeśli zwolnię wskaźnik do char który wskazywał na łańcuch "masło" to trace wskaźnik i komputer może tą pamięć używaną przez łańcuch znowu zaalokować ale nie wymazuje danych, prawda? I masło wciąż istnieje?

No, można tak powiedzieć.
"istnieje" w rozumieniu "te 5 bajtów pod danym adresem mogło pozostać niezmienionych".

Jeśli zatem zwolnie wskażnik na blok o rozmiarze x i potem od razu zaalokuje blok tego samego rozmiaru X to może tak się stać że wskaże mi znowu na "masło"?

Jest to prawdopodobne.

Btw: *tę pamięć

0

Dzięki wielkie wszystkim. Bardzo mi to pomogło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1