मेरे पास ऐसा प्रोग्राम है जो लोगों और उनकी कंपनियों के डेटाबेस को लागू करता है। मैंने क्लास सदस्यों के गतिशील सरणी के बजाय क्लास सदस्यों को पॉइंटर की गतिशील सरणी बनाई है, क्योंकि प्रतिलिपि इसके साथ तेज है।मिस्चैच हटाएं
मैं संस्करण है जो लेकिन valgrind काम करता है पता चलता बेमेल नाशक में हटाना (db हटाना)
CCompany** db;
~CCompanyIndex (void)
{
for(unsigned i=0;i<len;i++)
{
/*cout<<"dealloc:"<<db[i]<<endl;*/
delete db[i];
}
delete db;
}
CCompanyIndex (void)
{
max=1000;
len=0;
db=new CCompany*[max];
}
मैं
CCompany* newIt=new CCompany(oName,oAddr,cName,cAddr);
तो मैं कोड जो मैं सही, जिन पर निम्नलिखित की कोशिश की है जोड़ने के लिए भी उपयोग
~CCompanyIndex (void)
{
delete [] db;
}
लेकिन फिर विधि जोड़कर आवंटित सभी स्मृति को हटाया नहीं गया है।
(1) क्या आप [नियम के तीन] से परिचित हैं (http://stackoverflow.com/questions/4172722/what-is-the-rule-of-three)? (2) क्या आपने कच्चे पॉइंटर्स और गतिशील रूप से आवंटित स्मृति के बजाय स्मार्ट पॉइंटर्स और कंटेनर माना है? –