alloca()
ढेर पर स्मृति को आवंटित करता है, न कि ढेर पर malloc()
। इसलिए, जब मैं दिनचर्या से लौटता हूं तो स्मृति मुक्त हो जाती है। तो, वास्तव में यह गतिशील रूप से आवंटित स्मृति को मुक्त करने की मेरी समस्या को हल करता है। के माध्यम से आवंटित स्मृति को मुक्त करना malloc()
एक प्रमुख सिरदर्द है और यदि किसी तरह याद किया जाता है तो सभी प्रकार की स्मृति समस्याओं का सामना करना पड़ता है।
alloca()
उपरोक्त सुविधाओं के बावजूद हतोत्साहित का उपयोग क्यों किया जाता है?
free
(जो स्पष्ट रूप से एक फायदा है), गैर-इनलाइन करने की क्षमता (जाहिर तौर पर ढेर आवंटन बहुत भारी हैं) और आदि से बचने alloca
का एकमात्र कारण बड़े आकार के लिए है। यही है, ढेर मेमोरी को बर्बाद करना एक अच्छा विचार नहीं है, साथ ही आपके पास स्टैक ओवरफ्लो का मौका है। यदि यह मामला है - malloca
freea
alloca
यह है कि ढेर ढेर की तरह खंडित नहीं हो सकता है। यह कठिन वास्तविक समय तक चलने वाली शैली के अनुप्रयोगों, या यहां तक कि सुरक्षा महत्वपूर्ण अनुप्रयोगों के लिए उपयोगी साबित हो सकता है, क्योंकि WCRU तब समस्याओं के अपने स्वयं के सेट के साथ कस्टम मेमोरी पूल का सहारा लिए बिना सांख्यिकीय रूप से विश्लेषण किया जा सकता है (कोई अस्थायी इलाके नहीं, उप-इष्टतम संसाधन उपयोग)।