2009-07-08 8 views
5

मुझे यह त्रुटि मिल रही है किसी को इसके बारे में पता है ??? 2009-07-08 18: 42: 36.778 FlashCards [1297: 20b] श्रेणी क्रमांक = 1 FlashCards (1297,0xa0690fa0) malloc: * वस्तु 0x4fd78a0 के लिए त्रुटि: सूचक मुक्त कर दिया जा रहा है आवंटित नहीं किया गया था FlashCards (1297,0xa0690fa0) malloc: * वस्तु 0x4fdc200 के लिए त्रुटि: डबल मुक्त *** सेट malloc_error_break में एक ब्रेकपाइंट डिबग करने के लिएक्या आईफोन में एनएसआईएनटेगर जारी करना आवश्यक है?

उत्तर

16

नहीं, एक NSInteger एक वस्तु नहीं है, यह बस एक एक int के लिए (32-बिट एप्लिकेशन के लिए) (64-बिट एप्लिकेशन के लिए) typedef या एक long है:

#if __LP64__ 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
endif 
+0

मुझे त्रुटि के बारे में बताएं मुझे यह कैसे पता चलेगा कि कौन सी वस्तु त्रुटि दे रही है? –

+0

ठीक है आप एक एनएसआईएनटेगर पर रिलीज कॉलिंग प्रतीत होते हैं जो आप नहीं कर सकते हैं, क्योंकि यह कोई ऑब्जेक्ट नहीं है। –

3

NSInteger एक आदिम प्रकार के लिए एक typedef है, यह एक उद्देश्य यह है कि करने के लिए प्रतिक्रिया कर सकते हैं नहीं है बनाए रखने या रिलीज जैसी विधियां। भले ही इसे एनएसएनंबर या एनएसवीएलयू जैसे कोको कक्षाओं के समान नाम दिया गया हो, लेकिन वास्तव में इसे int, float, आदि के समान माना जाता है।

+0

मुझे त्रुटि के बारे में बताएं मुझे यह कैसे पता चलेगा कि कौन सी वस्तु त्रुटि दे रही है? –

0

त्रुटि संदेश आपको इस समस्या को डीबग करने में एक अच्छा संकेत देता है: malloc_error_break पर ब्रेक पॉइंट सेट करें। एक्सकोड में, ब्रेकपॉइंट्स विंडो खोलें (विकल्प-सीएमडी-बी)। क्षेत्र में "प्रतीक के लिए डबल-क्लिक" कहता है, malloc_error_break दर्ज करें। डीबगर में अपना ऐप दोबारा चलाएं (रन मेन्यू से डीबग का चयन करें)। आपके द्वारा रिपोर्ट की गई त्रुटि के बिंदु पर डीबगर बंद हो जाएगा। मैं इस बिंदु पर स्टैक ट्रेस की जांच करूंगा कि यह पता लगाने के लिए कि आपने इस स्मृति को दोगुना कर दिया है।

+0

malloc_error_break पर एक ब्रेक पॉइंट सेट करें। एक्सकोड में, ब्रेकपॉइंट्स विंडो खोलें (विकल्प-सीएमडी-बी)। "प्रतीक के लिए डबल-क्लिक" फ़ील्ड में, malloc_error_break दर्ज करें। डीबगर में अपना ऐप दोबारा चलाएं (रन मेन्यू से डीबग का चयन करें)। कृपया इसे अधिक विस्तार से समझाएं .. मैं malloc_error_break पर ब्रेक पॉइंट कहां सेट करूं। –

+0

एक्सकोड में, रन-> शो-> ब्रेकपॉइंट्स (रन मेनू से) चुनें या विकल्प, cmd और B बटन एक साथ दबाएं। दिखाई देने वाले ब्रेकपॉइंट पैनल में, "प्रतीक के लिए डबल-क्लिक करें" बॉक्स में डबल क्लिक करें और "malloc_error_break" टाइप करें (कोई उद्धरण नहीं)। –

+0

ब्रेकपॉइंट "malloc_error_break" –

संबंधित मुद्दे