निम्नलिखित कोड स्निपेट में एक स्मृति रिसाव है जिसे मैंने बहुत अधिक समय का पीछा किया। समस्या यह है कि Foo() के अंदर, स्थानीय चर x_ सदस्य चर x_ छुपाता है। यह भी काफी परेशान है, क्योंकि संकलक मुझे इसके बारे में चेतावनी दे सकता था। क्या ऐसी चेतावनी के लिए जीसीसी में कोई झंडा है? (उत्सुक के लिए: मैं पहली बार, एक स्थानीय चर का उपयोग कर तो एक सदस्य चर करने के लिए इसे बदलने के लिए, लेकिन प्रकार घोषणा दूर करने के लिए भूल से गाड़ी कोड पर आ चुके हैं।)सदस्य चर छुपाए जाने के बारे में चेतावनी?
struct A {
A() x_(NULL) {}
~A() {
delete x_;
}
void Foo() {
HugeThingy* x_ = new HugeThingy();
x_->Bar("I. Need. Garbage. Collection. Now.");
}
HugeThingy* x_;
DISALLOW_COPY_AND_ASSIGN(A); // Macro to prevent copy/assign.
}
कई लोगों ने उल्लेख किया है कि आपको केवल सूचक और गतिशील आवंटन के बजाय एक सादा स्ट्रिंग ऑब्जेक्ट का उपयोग करना चाहिए - और वे सही हैं। यदि (जैसा कि मुझे संदेह है) तो आप वास्तव में जानना चाहते हैं कि संकलक को आपको चेतावनी देने के लिए कैसे प्राप्त करें जब आप एक स्थानीय चर घोषित करते हैं जो सदस्य चर को छुपाता है, तो मैं आपके प्रश्न को स्पष्ट करने का सुझाव दूंगा। –
जैसा कि आपके पास सदस्य चर के रूप में सूचक है, कृपया प्रतिलिपि बनाने वाला और असाइनमेंट ऑपरेटर प्रदान करना याद रखें। –
यदि उन्हें प्रदान नहीं करते हैं, तो कम से कम डिफ़ॉल्ट को दबाएं। –