मेरे पास एमएस वीसी ++ 6.0 में कुछ कोड है जो मैं डिबगिंग कर रहा हूं। किसी कारण से, इस निश्चित बिंदु पर जहां मैं कुछ गतिशील रूप से आवंटित स्मृति को हटाने की कोशिश कर रहा हूं, यह टूट जाता है और मुझे एक पॉप अप संदेश बॉक्स मिलता है जिसमें कहा गया है कि "ब्ला ब्लाह पर कोड से बुलाया गया उपयोगकर्ता ब्रेकपॉइंट" .. फिर Disassembly विंडो पॉप अप और मैं देखकहीं भी उपयोगकर्ता ब्रेकपॉइंट
*memory address* int 3
अजीब बात है, वहाँ कोड है कि मैं इस तरह एक विधानसभा अनुदेश बोल रहा हूँ में कहीं नहीं है (मैं एएसएम लगता है 3 int x86 के लिए एक हार्डवेयर को तोड़ने आदेश है?) ..
क्या यह कारण हो सकता है?
संपादित करें: उत्तर: मेरा कोड एक सरणी के "अंत से बाहर निकलना" था, लेकिन केवल 0xFDFDFDFD के साथ विजुअल स्टूडियो डीबग द्वारा चिह्नित स्थानों में, जिसे नोमैन लैंड बाड़ कहा जाता है .. मुझे लगता है कि इसे एक भी कहा जाता है। एक-एक-एक त्रुटि .. यह सरणी उस बिंदु से असंबंधित थी जहां त्रुटि उत्पन्न होने पर मैं स्मृति को मुक्त कर रहा था। कौन सा यह मुश्किल को पहचानना बनाया .. :(
बस उत्सुक - क्या आपको यह पता लगाने के लिए असेंबली निर्देशों को एक-एक करके कदम मिला कि डीबग ढेर को कुछ अन्य टूल/तकनीक किस तरह पसंद नहीं आया या नहीं? –
मैंने इस साइट को देखा http://www.highprogrammer.com/alan/windev/visualstudio.html जो कहता है: कि 0xFDFDFDFD एक स्मृति मान था कि MSVC++ डीबगर एक सरणी में सीमा को इंगित करने के लिए उपयोग किया जाता है ताकि ऑफ-बाय- एक गलती .. मैंने अपने पॉइंटर्स की जांच की और एकल में पुनरावृत्तियों के माध्यम से कदम रखा .. – krebstar
स्रोत कोड और पाया कि मैंने अपने सरणी में से एक को ठीक से बाध्य नहीं किया है .. तो मुझे लगता है कि यह मेरे पॉइंटर्स को सही तरीके से जांचने की आवश्यकता है :) – krebstar