मैं हो रही है का उपयोग कर इसे मुक्त कराने के बाद एक सूचक का उपयोग करना:कोड निम्न प्रकार के साथ मुक्त() समस्याओं
int* myPointer1 = malloc(50 * sizeof(int));
int* myPointer2 = malloc(50 * sizeof(int));
free(myPointer1);
myPointer1 = myPointer2;
myPointer1[0] = 3;
मैं एक विभाजन गलती हो रही है। समस्या क्या है?
क्या आपने यह सुनिश्चित करने के लिए जांच की है कि मॉलोक ऑपरेशंस सफल रहे? यदि आप नहीं करते हैं तो आप myPointer1 को NULL को असाइन कर सकते हैं। – djhaskin987
आप कहां सेगफॉल्ट करते हैं? 'फ्री (myPointer1)' पर या 'myPointer1 [0] = 3' पर? – Seth
यदि 'malloc' सफल होता है तो कोई segfault नहीं होना चाहिए। आप जो कुछ कर रहे हैं वह स्मृति को 'myPointer1' के मूल स्मृति स्थान पर मुक्त कर रहा है, फिर' myPointer1' 'को' myPointer2' 'के स्थान पर पुन: असाइन कर रहा है। नोट, हालांकि, अगर आप उस आखिरी बिट मेमोरी को मुक्त करने जा रहे हैं, तो आप केवल एक ही पॉइंटर्स (यानी 'myPointer1' या' myPointer2') को मुक्त करना चाहते हैं क्योंकि वे एक ही पते पर इंगित करते हैं। – RageD