MC, 2025
Ilustracja do artykułu: Fortran ALLOCATE – Klucz do Dynamicznej Pamięci

Fortran ALLOCATE – Klucz do Dynamicznej Pamięci

Fortran to język programowania o długiej historii, który nadal jest używany w nauce i inżynierii. Jednym z jego potężnych narzędzi jest allocate, pozwalające dynamicznie rezerwować pamięć. W tym artykule przyjrzymy się, jak działa ta funkcja, dlaczego jest przydatna i jakie są jej typowe zastosowania.

Dlaczego warto używać ALLOCATE w Fortranie?

W tradycyjnych językach, takich jak C czy Pascal, pamięć często alokuje się statycznie, co oznacza, że program musi znać rozmiary tablic i struktur podczas kompilacji. Fortran oferuje allocate, co pozwala na dynamiczne przydzielanie pamięci w trakcie działania programu.

Główne zalety dynamicznej alokacji pamięci:

  • Możliwość alokowania pamięci dopiero wtedy, gdy jest potrzebna.
  • Oszczędność zasobów – nie trzeba rezerwować dużych statycznych tablic.
  • Elastyczność – możemy dostosowywać rozmiary struktur na podstawie danych wejściowych.

Podstawowe użycie ALLOCATE

Funkcja allocate jest używana do dynamicznego przydzielania pamięci dla tablic i wskaźników. Oto prosty przykład:

program dynamic_allocation
  implicit none
  integer, allocatable :: array(:)
  integer :: n
  
  print *, "Podaj liczbę elementów: "
  read *, n

  allocate(array(n))  
  print *, "Tablica o", n, "elementach została zaalokowana."

  deallocate(array)
  print *, "Pamięć zwolniona."
end program dynamic_allocation

Co tutaj się dzieje?

  • Definiujemy tablicę array jako allocatable, czyli możliwą do dynamicznej alokacji.
  • Pobieramy od użytkownika liczbę elementów.
  • Za pomocą allocate rezerwujemy pamięć.
  • Po zakończeniu programu zwalniamy pamięć funkcją deallocate.

Fortran ALLOCATE – przykłady bardziej zaawansowane

Oprócz podstawowego użycia, allocate może działać na wielowymiarowych tablicach, co jest szczególnie przydatne w obliczeniach naukowych.

program matrix_allocation
  implicit none
  real, allocatable :: matrix(:,:)
  integer :: rows, cols

  print *, "Podaj liczbę wierszy i kolumn: "
  read *, rows, cols

  allocate(matrix(rows, cols))
  print *, "Zaalokowano macierz ", rows, "x", cols

  matrix = 0.0  
  print *, "Macierz wyzerowana."

  deallocate(matrix)
  print *, "Pamięć zwolniona."
end program matrix_allocation

Obsługa błędów podczas alokacji

Co jeśli nie mamy wystarczająco dużo pamięci? Możemy sprawdzić wynik allocate za pomocą kodu błędu:

integer :: stat
allocate(matrix(10000, 10000), stat=stat)
if (stat /= 0) then
    print *, "Błąd alokacji!"
end if

Podsumowanie

Funkcja allocate w Fortranie to niezwykle przydatne narzędzie, które pozwala na dynamiczne zarządzanie pamięcią. Dzięki niej nasze programy mogą być bardziej elastyczne i efektywne. Mamy nadzieję, że teraz już wiesz, jak z niej korzystać!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: