एक कक्षा में मेरी कोड मैं कुछ "बदसूरत" संरचना का उपयोग मैं देखते हैं, की समीक्षा करने में है (जिसे "नक्शा") मैं एक वेक्टर जो एक "डाटा" वर्ग शामिल है:स्मृति प्रबंधन और std :: संभाजक
std::vector<PointerToHUGEClass> vector;
जहां पॉइंटरटूहुगेक्लास नाम का वर्णन करता है। (हालांकि ऑब्जेक्ट की ओर इशारा करते हुए भी नक्शा वर्ग के स्वामित्व में है, और कन्स्ट्रक्टर में "नया" पैरामीटर के साथ बनाया गया है)। यह सब अच्छा काम करता है (फिलहाल)। हालांकि मुझे अभी भी लगता है कि यह एक काम के आसपास है।
केवल कारण मैं एक "PointerToHUGEClass" के बजाय सिर्फ "HUGEClass" का उपयोग कर रहा है, क्योंकि मुझे यकीन है कि वस्तु ढेर से घोषित नहीं किया गया है बनाना चाहते थे है। इससे पहले कि मैं आवंटकों को समझने से पहले यह बनाया गया था। अब मुझे लगता है कि यह आवंटन का कार्य कम या कम है ताकि यह सुनिश्चित किया जा सके कि स्मृति को ढेर से घोषित नहीं किया गया है।
मेरे सवालों का:
- एम आई संभाजक संभालने में सही कर मदों से स्मृति प्रबंधन के लिए जिम्मेदार है? (और यह सुनिश्चित करना कि इसे स्टैक/फ्रीस्टोर/हीप/जो कुछ भी घोषित किया गया है)
- std :: आवंटक क्या करता है? - क्या यह ढेर से, या ढेर से घोषित करता है?
- (पिछले प्रश्न से फ़ॉलो करें): यदि मैं ढेर में घोषित एक आइटम को डेटास्ट्रक्चर में घोषित करता हूं तो क्या यह अभी भी ढेर में घोषित किया गया है?
धन्यवाद फिर से, paul23
@ सिमोन: हम्म कि कोड को 'std :: vector 'या' std :: vector ' पढ़ने के लिए धन्यवाद पढ़ना चाहिए। (हालांकि यह वास्तव में मेरे प्रश्नों को नहीं बदलता है, प्रश्न सामान्य रूप से अधिक हैं क्योंकि यह कुछ ऐसा है जो मैं पहले से ही एक साल के लिए सोच रहा हूं) –
paul23