Memory Allocation : प्रकार, महत्व, लाभ व हानि

Memory Allocation

Memory Allocation का अर्थ होता है — किसी Program या Data के लिए RAM (Main Memory) में जगह Reserve करना। जब कोई Program run होता है, तो Operating System (OS) उस program के data, instructions और variables को memory में store करता है।

मुख्य बिंदु :

  • यह एक process है, जिसमें किसी program के variables, constants, arrays, objects और functions को RAM में सही स्थान (proper location) दी जाती है।
  • हर variable को एक unique memory address मिलता है।
  • Compiler और Operating System decide करते हैं, कि कौन सा data कहाँ store होगा।
  • Memory allocation efficient होनी चाहिए, ताकि wastage न हो और program smooth चले।

उदाहरण :

  1. int age = 21; 
    • int age → 4 bytes (32-bit system पर) allocate होंगे।
  2. char name[20];
    • char name[20] → 20 bytes reserve होंगे compile time पर।

Memory Allocation का महत्व (Importance)

Memory Allocation किसी भी Programming Language (जैसे C, C++, Java आदि) में बहुत ही महत्वपूर्ण Concept है। क्योंकि इसके बिना कोई भी Program अपनी आवश्यकतानुसार Memory का सही उपयोग नहीं कर पाएगा।
Operating System यह तय करता है, कि कौन-से Variable, Data या Object को कितना Memory Space देना है।


Memory Allocation के मुख्य महत्व
 

  1. Ensures Efficient Memory Use
    • Memory Allocation यह सुनिश्चित करता है, कि System की RAM का उपयोग सबसे कुशल (Efficient) तरीके से हो।
    • हर Program को केवल उतनी Memory दी जाती है, जितनी उसकी आवश्यकता है, जिससे Memory Waste नहीं होती।
  2. Makes Program Execution Fast and Stable 
    • जब Memory का Allocation व्यवस्थित तरीके से होता है, तो Program Execution में Speed और Stability दोनों बढ़ती हैं। क्योंकि CPU को Data को Access करने में कम समय लगता है।
  3. Unused Memory Is Not Wasted
    • Proper Allocation से Memory का उपयोग Targeted और Limited होता है।
    • अगर कोई Program अपनी Task पूरी कर लेता है, तो उसकी Memory तुरंत Free कर दी जाती है, ताकि memory waste न हो।
  4. Prevents Memory Leaks
    • Memory Leak तब होता है, जब कोई Program Memory तो ले लेता है, पर उसे वापस Release नहीं करता।
    • Proper Allocation Systematic Deallocation के साथ Memory Leak की संभावना को कम करता है।
  5. Helps the Operating System Manage Resources
    • OS के पास कई Programs और Processes को Handle करने की जिम्मेदारी होती है।
    • Memory Allocation OS को यह तय करने में मदद करता है, कि कौन-से Process को कितनी Memory मिले और कब उसे वापस लेना है।

मेमोरी एलोकेशन के प्रकार (Types of Memory Allocation)

1. स्थायी मेमोरी एलोकेशन (Static Memory Allocation)

Static Memory Allocation वह प्रकार है, जिसमें Memory का Size Compile Time पर ही तय कर दिया जाता है। यानि Program को चलाने से पहले ही तय होता है, कि कौन-सा Variable या Array कितनी Memory Use करेगा।

Static Memory Allocation की विशेषताएँ (Features)

  • Memory Compile Time पर Allocate होती है।
  • Memory का Size Fixed रहता है|
  • Deallocation Automatically होती है (Program खत्म होते ही)।
  • Memory Stack में Reserve होती है।
  • Speed तेज़ होती है, क्योंकि Memory पहले से Reserve रहती है।

उदाहरण :
int marks[100];
यहाँ compiler को पहले से पता है, कि 100 integers चाहिए → 400 bytes allocate हो जाएँगे compile time पर।

2. गतिशील मेमोरी एलोकेशन (Dynamic Memory Allocation)

Dynamic Memory Allocation वह प्रकार है, जिसमें Memory Run Time पर Allocate होती है। यानि Program Run time  में ही तय होता है, कि कितनी Memory चाहिए।

Dynamic Memory Allocation की विशेषताएँ (Features)

  • Memory Run Time पर Allocate होती है।
  • Memory का Size प्रोग्राम के चलते बदल सकता है।
  • Programmer को Memory Manually Free करनी पड़ती है (free() function से)।
  • Heap Memory का उपयोग होता है।
  • ज्यादा Flexible और Efficient होती है।

उदाहरण :

int *ptr;
ptr = (int*) malloc(5 * sizeof(int));

Code में Program के चलने के समय 5 integers के लिए Memory Allocate होगी। यदि बाद में अधिक Memory की आवश्यकता हो, तो हम realloc() का उपयोग करके Size बढ़ा सकते हैं।

लाभ (Advantages)

  1. Efficient Memory Utilization
    • Memory Allocation यह सुनिश्चित करता है, कि System की Memory का उपयोग सही तरीके से हो।
    • हर Program को उतनी ही Memory मिलती है, जितनी उसे आवश्यकता है, जिससे Memory Waste नहीं होती।
  2. Makes Program Execution Faster and Smoother
    • जब Memory ठीक तरह से Allocate होती है, तो Data Access जल्दी होता है, और CPU को Process करने में कम समय लगता है।
    • इससे Program Execution Speed बढ़ जाती है।
  3. Improves System Stability
    • Memory Allocation यह तय करता है, कि कौन-सा Program किस Memory Block में चलेगा।
    • इससे कोई Program दूसरे की Memory को Access नहीं कर सकता — जिससे System Stable और Secure रहता है।
  4. Makes Resource Management Easier
    • Operating System के लिए System Resources (RAM, CPU, Cache आदि) को Manage करना Memory Allocation की वजह से आसान होता है।
    • यह OS को बताता है, कि कौन-सी Memory Busy है, और कौन-सी Free।
  5. Helps Handle Dynamic Requirements
    • Dynamic Memory Allocation Programs को Run Time पर अपनी जरूरत के अनुसार Memory लेने की अनुमति देता है।
    • इससे Flexible Programs बनाना आसान हो जाता है।
  6. Prevent Memory Leaks and Fragmentation
    • अगर Memory Allocation Techniques सही तरह से लागू की जाएं, तो System में Memory Leak या Fragmentation जैसी समस्याएँ बहुत कम होती हैं।
  7. Supports Multitasking
    • Memory Allocation की वजह से एक ही समय में कई Programs को Run किया जा सकता है।
    • क्योंकि हर Process को अपनी Separate Memory मिलती है।

हानि (Disadvantages)

  1. Memory Leak Problem
    • Memory Leak तब होती है, जब Program Memory तो ले लेता है, पर उसे Free नहीं करता।
    • यह System की Performance को धीरे-धीरे कम करता है।
  2. Fragmentation Problem
    • बार-बार Memory Allocate और Deallocate करने से Memory के बीच छोटे-छोटे खाली Gaps बन जाते हैं। इसे Fragmentation कहते हैं, जिससे Memory का उपयोग कम हो जाता है।
  3. Slow Performance in Dynamic Allocation
    • Dynamic Memory Allocation में Memory Run Time पर दी जाती है, इसलिए Speed थोड़ी Slow होती है।
    • Static Allocation की तुलना में इसमें Execution Time ज्यादा लगता है।
  4. Programmer errors can cause errors
    • Memory Allocation में Error Handling का ध्यान रखना जरूरी है।
    • अगर Pointer गलत Memory को Access करे तो Segmentation Fault या Crash हो सकता है।
  5. Need for Manual Deallocation
    • Dynamic Memory Allocation में Programmer को Memory खुद Free करनी पड़ती है। अगर यह भूल जाए, तो System Resources Waste होते हैं।
  6. Limited Memory Space
    • अगर Program बहुत बड़ी Memory Demand करे और System के पास उतनी RAM न हो,
    • तो Program Crash हो सकता है या “Out of Memory” Error दिखाता है।
  7. Complex Memory Management
    • Memory Allocation और Deallocation का सही Logic बनाना आसान नहीं होता,
    • जब Program में कई Functions और Objects एक साथ Memory Use कर रहे हों।
error: Content is protected !!