Computer Programming Dynamic Memory Allocation এবং Deallocation গাইড ও নোট

280

ফোরট্রানে Dynamic Memory Allocation এবং Deallocation

ফোরট্রানে ডায়নামিক মেমরি অ্যালোকেশন (dynamic memory allocation) এবং ডিলোকেশন (deallocation) ব্যবহৃত হয় যখন প্রোগ্রাম চলাকালে মেমরির আকার নির্ধারণ করতে হয়, অর্থাৎ আপনি প্রোগ্রামের রানটাইমে মেমরি নির্ধারণ করতে চান। এটি অ্যারে বা ডেটা স্ট্রাকচারগুলির জন্য অত্যন্ত উপকারী, যখন আপনি জানেন না কতটা মেমরি প্রয়োজন হবে প্রোগ্রাম শুরু করার আগে।

ফোরট্রানে ডায়নামিক মেমরি অ্যালোকেশন করতে ALLOCATABLE কিওয়ার্ড এবং মেমরি মুক্ত করতে DEALLOCATE কিওয়ার্ড ব্যবহার করা হয়।


১. Dynamic Memory Allocation

ফোরট্রানে ডায়নামিক মেমরি অ্যালোকেশন করার জন্য আপনাকে প্রথমে ALLOCATABLE কিওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল ডিক্লেয়ার করতে হবে। তারপর ALLOCATE স্টেটমেন্টের মাধ্যমে মেমরি বরাদ্দ করা হয়।

সিনট্যাক্স:

<datatype>, ALLOCATABLE :: <array_name>(<size>)
ALLOCATE(<array_name>(<size>))
  • ALLOCATABLE কিওয়ার্ড দ্বারা ভেরিয়েবল ডিক্লেয়ার করা হয়, যা পরে ডায়নামিকভাবে বরাদ্দ করা হবে।
  • ALLOCATE স্টেটমেন্ট দ্বারা ভেরিয়েবলের জন্য মেমরি বরাদ্দ করা হয়।

উদাহরণ:

PROGRAM dynamic_allocation_example
    INTEGER, ALLOCATABLE :: arr(:)
    INTEGER :: n, i

    PRINT *, 'Enter the size of the array:'
    READ *, n

    ! অ্যারের জন্য ডায়নামিক মেমরি বরাদ্দ করা
    ALLOCATE(arr(n))

    ! অ্যারে ইনপুট
    PRINT *, 'Enter ', n, ' values for the array:'
    DO i = 1, n
        READ *, arr(i)
    END DO

    ! অ্যারের উপাদান প্রিন্ট করা
    PRINT *, 'Array elements are:'
    DO i = 1, n
        PRINT *, 'arr(', i, ') = ', arr(i)
    END DO

    ! মেমরি ডিলোকেট করা
    DEALLOCATE(arr)
END PROGRAM dynamic_allocation_example

এখানে:

  • প্রথমে ALLOCATABLE কিওয়ার্ড দিয়ে arr নামক একটি অ্যারে ডিক্লেয়ার করা হয়েছে।
  • তারপর ALLOCATE(arr(n)) স্টেটমেন্ট দিয়ে অ্যারের জন্য ডায়নামিক মেমরি বরাদ্দ করা হয়েছে, যেখানে n হলো অ্যারের আকার।

আউটপুট:

Enter the size of the array:
5
Enter 5 values for the array:
1
2
3
4
5
Array elements are:
 arr( 1 ) =  1
 arr( 2 ) =  2
 arr( 3 ) =  3
 arr( 4 ) =  4
 arr( 5 ) =  5

২. Deallocation (মেমরি মুক্ত করা)

ফোরট্রানে মেমরি ডিলোকেট করার জন্য DEALLOCATE স্টেটমেন্ট ব্যবহার করা হয়। এটি একটি ডায়নামিক্যালি অ্যালোকেটেড অ্যারে বা ভেরিয়েবল থেকে মেমরি মুক্ত করে।

সিনট্যাক্স:

DEALLOCATE(<array_name>)

উদাহরণ:

PROGRAM deallocation_example
    INTEGER, ALLOCATABLE :: arr(:)
    INTEGER :: n, i

    PRINT *, 'Enter the size of the array:'
    READ *, n

    ! অ্যারের জন্য ডায়নামিক মেমরি বরাদ্দ করা
    ALLOCATE(arr(n))

    ! অ্যারে ইনপুট
    PRINT *, 'Enter ', n, ' values for the array:'
    DO i = 1, n
        READ *, arr(i)
    END DO

    ! অ্যারের উপাদান প্রিন্ট করা
    PRINT *, 'Array elements are:'
    DO i = 1, n
        PRINT *, 'arr(', i, ') = ', arr(i)
    END DO

    ! মেমরি ডিলোকেট করা
    DEALLOCATE(arr)
    PRINT *, 'Memory deallocated.'
END PROGRAM deallocation_example

এখানে:

  • DEALLOCATE(arr) স্টেটমেন্টটি arr অ্যারের মেমরি মুক্ত করে।

আউটপুট:

Enter the size of the array:
3
Enter 3 values for the array:
5
10
15
Array elements are:
 arr( 1 ) =  5
 arr( 2 ) =  10
 arr( 3 ) =  15
Memory deallocated.

এখানে arr অ্যারের মেমরি মুক্ত করার পরে Memory deallocated. মেসেজ প্রিন্ট করা হয়েছে।


৩. ডায়নামিক মেমরি ব্যবস্থাপনার প্রয়োজনীয়তা

ফোরট্রানে ডায়নামিক মেমরি ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে বড় ডেটা সেট বা বিভিন্ন আকারের অ্যারে ব্যবহারের ক্ষেত্রে। এর কয়েকটি প্রয়োজনীয়তা:

  1. অজানা আকারের ডেটার জন্য মেমরি বরাদ্দ: কখনও কখনও প্রোগ্রাম চলাকালে ডেটার আকার জানা যায় না, তখন ডায়নামিক মেমরি অ্যালোকেশন প্রয়োজন হয়।
  2. মেমরি অপ্টিমাইজেশন: আপনি যখন জানেন না কতটা মেমরি প্রয়োজন হবে, তখন ডায়নামিক মেমরি ব্যবস্থাপনা কেবলমাত্র প্রয়োজনীয় মেমরি বরাদ্দ করতে সহায়তা করে।
  3. মেমরি ব্যবস্থাপনা সহজ করা: ডায়নামিক মেমরি ব্যবহার করার মাধ্যমে প্রোগ্রামের ভেতর একটি মেমরি ব্লক বরাদ্দ করা হয় যা পরবর্তীতে প্রয়োজনের সময় মুক্ত করা যায়।

উপসংহার

  • ALLOCATABLE এবং ALLOCATE স্টেটমেন্ট ব্যবহার করে আপনি ফোরট্রানে ডায়নামিক মেমরি অ্যালোকেশন করতে পারেন।
  • DEALLOCATE স্টেটমেন্ট ব্যবহার করে আপনি অপ্রয়োজনীয় মেমরি মুক্ত করতে পারেন।
  • ডায়নামিক মেমরি ব্যবস্থাপনা বৃহৎ ডেটা এবং অ্যারের আকার পরিবর্তনশীল হলে খুবই উপকারী।
Content added By
Promotion

Are you sure to start over?

Loading...