इसके बीच क्या अंतर है:सी ++: स्थानीय सरणी परिभाषा बनाम एक मॉलोक कॉल
somefunction() {
...
char *output;
output = (char *) malloc((len * 2) + 1);
...
}
और यह:
somefunction() {
...
char output[(len * 2) + 1];
...
}
एक दूसरे से अधिक उचित कब होता है?
सभी आपके उत्तरों के लिए धन्यवाद। यहां सारांश है:
- ex। 1 ढेर आवंटन
- पूर्व है। 2 स्टैक आवंटन
- स्टैक पर एक आकार सीमा है, इसे छोटे आवंटन के लिए उपयोग करें
- आपको ढेर आवंटन मुक्त करना होगा, या यह
- को रिसाव करेगा, फ़ंक्शन आवंटित होने पर स्टैक आवंटन पहुंच योग्य नहीं होगा
- ढेर आवंटन तब तक पहुंच योग्य है जब तक आप इसे मुक्त नहीं करते (या ऐप समाप्त होता है)
- वीएलए मानक सी ++
सुधार का हिस्सा नहीं है।
यहां ढेर बनाम स्टैक के बीच अंतर का कुछ स्पष्टीकरण है:
What and where are the stack and heap?
आपको अपनी सी ++ पुस्तक से परामर्श लेना चाहिए। यदि आपके पास सी ++ पुस्तक नहीं है, तो मैं [पूर्ण सी ++ पुस्तक मार्गदर्शिका और सूची] में सूचीबद्ध शुरुआती ग्रंथों में से एक प्राप्त करने की अनुशंसा करता हूं (http://stackoverflow.com/questions/388242/the-definitive-c-book -मार्गदर्शक और सूची)। –
इसके अलावा, सवाल पूरी तरह से निर्भर करता है कि कैसे 'लेन' परिभाषित किया गया है; यदि यह स्थिर नहीं है, तो दूसरा कोड उदाहरण बीमार गठित सी ++ है। –
लेन एक int है और फ़ंक्शन के अंदर स्ट्रेल के परिणाम के लिए असाइन किया गया है। – Gush