मैं धारणा है कि ऑब्जेक्टिव-सी में alloc
(जब हम [anyObject alloc]
आह्वान वास्तव में सी समारोह malloc
और स्मृति लागू कर रहा है ढेर में आवंटित हो रही के तहत किया गया है, लेकिन खोजते समय नहीं कहीं भी इस बात के लिए इस सवाल का जवाब भी मिल सकता है।एलोक, मॉलोक, और एलोका - क्या अंतर है?
, alloc
के लिए, मैं alloca
जो ढेर में स्मृति आवंटित करता पाया। अगर मैं गलत नहीं हूँ, alloc
वस्तुओं को बनाने के ढेर में स्मृति आवंटित करता है।
तो, क्या alloc
और malloc
(और alloca
) के बीच का अंतर है? किसी को भी कृपया संक्षेप में प्रस्तुत कर सकते हैं
"स्थिति जहां alloca() उपयुक्त है दुर्लभ हैं। लगभग सभी परिस्थितियों में, आपको स्मृति आवंटित करने के लिए malloc() का उपयोग करना चाहिए।" नहीं। सभी 'alloca() 'वैरिएबल लम्बाई सरणी प्रदान करता है। 'Int n = 6 के बीच कोई व्यावहारिक अंतर नहीं है; डबल एक्स [एन]; 'और 'int n = 6; डबल * एक्स = एलोका (एन * आकार (* एक्स)); 'केवल इतना ही नहीं, मल्टीथ्रेड प्रोग्राम में' malloc() 'का उपयोग एक गंभीर प्रदर्शन बाधा हो सकता है। –
मेरी क्वेरी उद्देश्य-सी के संदर्भ में अधिक थी जो स्मृति को आवंटित करने के लिए '[[someObject alloc] init] लागू करती है और ऑब्जेक्ट को ढेर में प्रारंभ करती है। क्या यह '[someObject alloc]' पृष्ठभूमि में 'malloc' लागू करता है? –
@AndrewHenle मैंने यह नहीं कहा कि * नहीं * स्थितियां हैं जहां 'alloca()' उपयुक्त है; मैंने कहा कि वे दुर्लभ हैं। वीएलए एक मामला है जहां वे उपयोगी हैं, लेकिन यहां तक कि वे अनिवार्य रूप से एक अनुकूलन हैं। चूंकि ओपी स्पष्ट रूप से सी प्रोग्रामिंग के लिए नया है, इसलिए मैंने विवरण में गहराई से जाने का विकल्प नहीं चुना। :) – duskwuff