2012-04-02 5 views
5

में मेमोरी भ्रष्टाचार की जांच कैसे करें मेरे पास मेरे प्रोजेक्ट में कोई समस्या है। कभी-कभी निष्पादन त्रुटि के साथ विफल रहता है "पढ़ने/लिखने की जगह xxxxx तक पहुंचने के लिए unabe"। मुझे पता है कि यह एक स्मृति भ्रष्टाचार त्रुटि है। लेकिन मैं उस त्रुटि का पता कैसे लगा सकता हूं। यह एक चर के स्मृति विलोपन में असफल रहा है, अगर मैं उस पंक्ति पर टिप्पणी करता हूं तो यह ठीक प्रसंस्करण कर रहा है। यही है, इस चर के लिए स्मृति पहले से ही जारी कर दिया गया है। इससे पहले यह ठीक काम कर रहा था, मैंने हाल ही में कोड जोड़ा लेकिन मैंने इससे संबंधित कुछ भी नहीं बदला। मैं इसके लिए स्मृति भ्रष्टाचार की जांच कैसे कर सकता हूं।सी ++

+0

आप किस ऑपरेटिंग सिस्टम, कंपाइलर और आईडीई का उपयोग कर रहे हैं? –

+0

क्या मंच? किसी भी तरह से, कुछ googling या एसओ खोज, इस सवाल को दस लाख बार मौत के लिए कहा गया है। –

+0

@ अमरवती शायद आपके कार्यक्रम में एक डबल विलोपन है। केवल विवरण के साथ, यह कहना संभव नहीं है कि समस्या कहां है। इस मुद्दे को एक छोटे से प्रोग्राम में दोहराएं और यहां कोड पोस्ट करें। – Mahesh

उत्तर

0

दी गई जानकारी के साथ, आपको हाल ही में जोड़े गए सभी कोडों को चरणबद्ध करना होगा (यदि यह एक हालिया मुद्दा है) और प्रत्येक पंक्ति का मूल्यांकन और जांच करें और देखें कि क्या आप स्मृति को रोक रहे हैं। memcopy एक ऐसा आदेश है जो इस प्रकार की त्रुटि का कारण बन सकता है यदि आप जिस आइटम की प्रतिलिपि बना रहे हैं उसके आकार के लिए बहुत अधिक आवंटित कर रहे हैं।

सुनिश्चित करें कि आप केवल एक बार अपनी ऑब्जेक्ट्स (पॉइंटर्स) को हटा रहे हैं।

7

यदि आप लिनक्स के अंतर्गत हैं, तो valgrind का उपयोग करें, यह आपको दिखाएगा कि क्या हो रहा है यदि आप अपनी याददाश्त को रोकते हैं।

विंडोज़ पर: see here

+0

नहीं। मैं खिड़कियों पर हूँ। वीएस 2008 संपादक – Amaravathi

+1

@ अमावती का उपयोग करके आप अपने मूल प्रश्न में ऐसा क्यों नहीं कहा? इससे बड़ी मात्रा में मदद मिलेगी। – Bojangles

+0

जब मैं वालग्रिंड के नीचे दौड़ता हूं तो स्मृति मेमोरी समस्या होने के बाद यह निश्चित रूप से कभी भी segfaults नहीं है। –

0

यदि आप विंडोज का उपयोग कर रहे हैं, तो WinDbg आज़माएं। यह सबसे अच्छा और बहुत शक्तिशाली है।