[#1] Jak dynamicznie zmieniać rozmiar przydzielonej pamięci i problemy z FreeMem()
Pisząc w assemblerze dysponujemy jedynie tym co oferują nam biblioteki systemowe.
Są oczywiście bogate biblioteki zwnętrzne.. ale jeśli program ma być jednym samodzielnym
plikiem musimy stosować to co jest w Kickstart.


Exec library zawiera funkcje AllocMem() i FreeMem(), nie ma tam Realloc() więc jak zwiększyć
rozmiar przydzielonej pamięci?? Przydzielenie nowego większego obszaru i przepisanie tam starego,.. a
potem zwolnienie tego wcześniejszego???

Czy jest jakieś inne rozwiązanie?

Wreszcie funkcja FreeMem(), w jakim celu umieszczono w niej parametr rozmiaru?? Czy można przydzielić np. 200Kb i zwolnić
za pomocą FreeMem() pierwsze 100Kb pozostawiając kolejne 100Kb, którego zwolnienie będzie
możliwe poprzez kolejne wywołanie FreeMem()..... Czemu nie działa?
[#2] Re: Jak dynamicznie zmieniać rozmiar przydzielonej pamięci i problemy z FreeMem(

@68k_tester, post #1

Na realokację nie ma innego sposobu jak alokacja nowego kawałka, kopiowanie danych i zwolnienie starego.

Wreszcie funkcja FreeMem(), w jakim celu umieszczono w niej parametr rozmiaru??

Żeby była szybsza. Na nowszych wersjach systemu można używać AllocVec() i FreeVec(), które pamiętają rozmiar. Częściowe zwalnianie alokacji nie jest możliwe ze względu na konstrukcję managera pamięci.

Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem