Sprawdzanie dostępności pamięci

0

Jest możliwość sprawdzenia, czy dana konkretna komórka pamięci naleząca do free store programu jest dostępna i można w niej coś zadelkarować? Jeśli tak, to jak to zrobic?

0

Jakiś bezsens, nawet gdyby udało ci się sprawdzić to jak zamierzasz: - "w niej coś zadelkarować" ?

0

Nie wiem, zmodifikowanym operatorem new. Jakbym wiedział, to bym nie pisał tego tematu.

1

nie można sprawdzić. Ale możesz sobie zrobić coś takiego

http://www.parashift.com/c++-faq/placement-new.html

0

Problem polega na tym, ze tworząc swoj własny konkener chce to maksymalnie zoptymalizować. No i gdybym miał coś do tego kontenera dodać na koniec to (gdyby istniała taka możliwość) można sprawdzic, czy komórka pamięci za ostatnim elementem kontenera jest wolna, jeśli tak, to "podpiąć" ją pod kontener. Mam rozumiec, ze w STL w przypadku dodawania elementow następuje zwykłe kopiowanie zawartosci bez jakis magicznych optymalizacji?

1

jesli chodzi Ci o vector to vector przy tworzeniu rezerwuje sobie iles tam pamieci na nowe elementy (to mozna tez zdefiniowac) przy dodawaniu sprawdza czy nie przekroczy istniejacego zakresu, jezeli przekroczy. Tworzy nowy (dwa razy wiekszy) i wszystko kopiuje do nowego i zwalnia stary

jak sobie podejrzysz teraz pamiec to wszedzie "cos jest" skad na dobra sprawde kompilator mialby wiedziec czy to jest to co Ciebie interesuje?

1

(...) bez jakis magicznych optymalizacji?

Nie. "Magiczna" optymalizacja jest taka, że taki kontener alokuje więcej miejsca niż mu jest potrzebne.

Stary artykuł, ale w zasadzie wyjaśnia o co chodzi: http://www.drdobbs.com/c-made-easier-how-vectors-grow/184401375
A tutaj np. jak to wygląda w kontenerach Qt: http://qt-project.org/doc/qt-5.0/qtcore/containers.html#growth-strategies

0

O to mi chodziło, choć na to sam wpadłem. Myślałem, ze wiecej w tym magii ;p

1

@pingwindyktator może realloc() który sam sprawdza czy się da "rozszerzyć" blok czy trzeba alokować nowy? ;)

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