ফোরট্রানে ALLOCATE এবং DEALLOCATE স্টেটমেন্ট
ফোরট্রানে ALLOCATE এবং DEALLOCATE স্টেটমেন্টগুলি ডায়নামিক মেমরি ব্যবস্থাপনার জন্য ব্যবহৃত হয়। ডায়নামিক মেমরি ব্যবস্থাপনা আপনাকে প্রোগ্রামের চলাকালীন সময়ে অ্যারের আকার নির্ধারণ এবং মুক্ত করার সুযোগ দেয়। এটি বিশেষভাবে বড় বা পরিবর্তনশীল ডেটা সেটগুলির সাথে কাজ করার সময় উপকারী।
১. ALLOCATE স্টেটমেন্ট
ALLOCATE স্টেটমেন্ট ব্যবহার করে একটি ডায়নামিক অ্যারে তৈরি করা হয় এবং এটি চলমান প্রোগ্রামের মধ্যে মেমরি বরাদ্দ করে।
ALLOCATE স্টেটমেন্টের সাধারণ গঠন:
ALLOCATE(array_name(size))array_name: অ্যারের নাম।size: অ্যারের আকার, যা একটি একক মান বা একটি ভেক্টর হতে পারে (ডায়নামিকভাবে নির্ধারণ করা হয়)।
ALLOCATE উদাহরণ:
program allocate_example
implicit none
integer, dimension(:), allocatable :: arr ! ডায়নামিক অ্যারে
integer :: i, n
! ডায়নামিক আকার ইনপুট
print *, 'Enter the size of the array:'
read *, n
! অ্যারে জন্য মেমরি বরাদ্দ
allocate(arr(n))
! অ্যারের উপাদান ইনপুট
do i = 1, n
print *, 'Enter value for element ', i
read *, arr(i)
end do
! অ্যারের উপাদান প্রিন্ট করা
print *, 'Array elements: '
do i = 1, n
print *, arr(i)
end do
! মেমরি মুক্ত করা
deallocate(arr)
end program allocate_exampleএখানে:
allocate(arr(n))দিয়ে অ্যারের আকারnএর আকারের জন্য মেমরি বরাদ্দ করা হয়েছে।- ইনপুট আকার অনুযায়ী অ্যারের উপাদানগুলি ইনপুট নেওয়া এবং পরে সেগুলি প্রিন্ট করা হয়েছে।
- শেষে
deallocate(arr)দিয়ে মেমরি মুক্ত করা হয়েছে।
ALLOCATE স্টেটমেন্টের বৈশিষ্ট্য:
allocatableঅ্যারে ডিক্লেয়ার করার জন্য ব্যবহৃত হয়।- এটি রানটাইমে অ্যারের আকার নির্ধারণ করতে সক্ষম।
- অ্যারে ব্যবহার শেষ হলে
DEALLOCATEস্টেটমেন্টের মাধ্যমে মেমরি মুক্ত করা প্রয়োজন।
২. DEALLOCATE স্টেটমেন্ট
DEALLOCATE স্টেটমেন্ট ব্যবহার করে ডায়নামিকভাবে বরাদ্দকৃত মেমরি মুক্ত করা হয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন অ্যারের আকার পরিবর্তন করতে হয় বা অ্যারের ব্যবহার শেষ হয়ে যায়।
DEALLOCATE স্টেটমেন্টের সাধারণ গঠন:
DEALLOCATE(array_name)array_name: ডায়নামিক অ্যারে যার মেমরি মুক্ত করতে হবে।
DEALLOCATE উদাহরণ:
program deallocate_example
implicit none
integer, dimension(:), allocatable :: arr ! ডায়নামিক অ্যারে
integer :: i, n
! ডায়নামিক আকার ইনপুট
print *, 'Enter the size of the array:'
read *, n
! অ্যারে জন্য মেমরি বরাদ্দ
allocate(arr(n))
! অ্যারের উপাদান ইনপুট
do i = 1, n
print *, 'Enter value for element ', i
read *, arr(i)
end do
! অ্যারের উপাদান প্রিন্ট করা
print *, 'Array elements: '
do i = 1, n
print *, arr(i)
end do
! মেমরি মুক্ত করা
deallocate(arr)
! ডিলোকেশন পরবর্তী কিছু কোড
print *, 'Memory deallocated successfully.'
end program deallocate_exampleএখানে:
deallocate(arr)ব্যবহার করা হয়েছে অ্যারের মেমরি মুক্ত করতে, যাতে অ্যারে আর ব্যবহার না করা হলে মেমরি সঠিকভাবে মুক্ত হয়।
DEALLOCATE স্টেটমেন্টের বৈশিষ্ট্য:
- এটি ডায়নামিকভাবে বরাদ্দকৃত অ্যারের মেমরি মুক্ত করতে ব্যবহৃত হয়।
- ডেলোকেশন পর, অ্যারে আর ব্যবহার করা যাবে না (এটি
allocatableঅ্যারে). - একটি ডেলোকেশন অপারেশন যদি সফল হয় তবে এটি মেমরি পরিষ্কার করতে সাহায্য করে, যা মেমরি লিক প্রতিরোধ করতে সহায়ক।
৩. ALLOCATE এবং DEALLOCATE স্টেটমেন্টের ব্যবহারিক উদাহরণ
ফোরট্রানে ALLOCATE এবং DEALLOCATE স্টেটমেন্টের ব্যবহার করার একটি সাধারণ উদাহরণ হতে পারে, যেখানে আপনি ব্যবহারকারীর ইনপুট অনুযায়ী অ্যারের আকার এবং তার উপাদানগুলি নির্ধারণ করেন, পরে মেমরি মুক্ত করেন:
program dynamic_array_example
implicit none
integer, dimension(:), allocatable :: array
integer :: size, i
! অ্যারের আকার ইনপুট নিন
print *, 'Enter the size of the array:'
read *, size
! মেমরি বরাদ্দ
allocate(array(size))
! অ্যারের মান ইনপুট নিন
print *, 'Enter the elements of the array:'
do i = 1, size
read *, array(i)
end do
! অ্যারের মান প্রিন্ট করা
print *, 'Array elements are: '
do i = 1, size
print *, array(i)
end do
! মেমরি মুক্ত করা
deallocate(array)
print *, 'Memory has been deallocated.'
end program dynamic_array_exampleএখানে:
allocate(array(size)): ইনপুট আকার অনুযায়ী অ্যারের জন্য মেমরি বরাদ্দ করা হয়েছে।deallocate(array): অ্যারের মেমরি মুক্ত করার জন্য ব্যবহার করা হয়েছে।
উপসংহার
ফোরট্রানে ALLOCATE এবং DEALLOCATE স্টেটমেন্টগুলো ডায়নামিক মেমরি ব্যবস্থাপনার জন্য অত্যন্ত গুরুত্বপূর্ণ। ALLOCATE স্টেটমেন্ট ব্যবহার করে মেমরি বরাদ্দ করা হয় এবং DEALLOCATE স্টেটমেন্টের মাধ্যমে মেমরি মুক্ত করা হয়। এগুলি ডায়নামিক অ্যারে ব্যবহারের জন্য অত্যন্ত কার্যকরী এবং কোডের মেমরি ব্যবস্থাপনাকে দক্ষ করে তোলে।
Read more