Oddity Napisano Maj 30, 2018 Autor Zgłoś Udostępnij Napisano Maj 30, 2018 Pamięć wirtualna jest tworzona po to, aby nie doszło do sytuacji, gdy brakuje RAM-u. Czy Twój program znajdzie się w VM, czy w rzeczywistym RAM-ie, zależy od systemu i nie masz na to wpływu (oczywiście im mniejszy program, tym bardziej prawdopodobne, że znajdzie się w RAM). Z poziomu aplikacji nie ma żadnego rozróżnienia pomiędzy pamięcią fizyczną a wirtualną. Otrzymujesz wskaźniki wirtualne, które wskazują na pamięć wirtualną. Na wskaźniki rzeczywiste konwertuje je Windows. A tak na marginesie, możliwość ingerencji przez program w pamięć ogólnodostępną w środowisku wielozadaniowym byłaby swoistą bombą zegarową. Wyobraź sobie zwykłe przepełnienie bufora, po którym w pamięci umieszczone są dane systemowe lub kernel. Mały błąd w programie i crash całego systemu? Tak, tak by to właśnie wyglądało. Jeśli chodzi o alokowanie dużej ilości pamięci, to nie ma problemu. Jeśli chcesz, możesz sobie zaalokować 2GB, jeśli wystarczy Ci na to miejsca na dysku. Na koniec powtórze jeszcze jedno: w programie nie rozróżniasz RAM/Virtual Memory. Nie możesz zadecydować, gdzie przechowywana będzie zmienna. Robi to za Ciebie system operacyjny (i całe szczęście). Wskaźnik to wskaźnik, jego dokładną wartością nie musisz się martwić. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.