ढेर - फंक्शन के अंदर घोषित सभी वेरिएबल स्टैक से मेमोरी लेंगे। तो, फ़ंक्शन के अंदर कोई भी स्थानीय चर स्टैक पर रहता है।
ढेर - यह प्रोग्राम की अप्रयुक्त मेमोरी है और प्रोग्राम के चलने पर मेमोरी को गतिशील रूप से आवंटित करने के लिए इसका उपयोग किया जा सकता है। इसलिए यदि हम चाहते हैं कि कोई चीज़ उस फ़ंक्शन से अधिक समय तक जीवित रहे जिसने इसे घोषित किया था, तो हमें इसे ढेर पर आवंटित करना होगा।
उदाहरण
int main() { int a; //get memory allocated on stack. int *ptr=new int[7]; //memory for 7 integers allocated on heap. }
हीप मेमोरी में मुख्य समस्या विखंडन है जबकि मेमोरी की कमी की समस्या स्टैक में अधिक देखी जाती है। मेमोरी का आकार हीप में बदला जा सकता है जिसे स्टैक में नहीं बदला जा सकता।