c - Runtime error due to free() function -
<पूर्व>
#include & lt; stdio.h & gt; # शामिल करें & lt; stdlib.h & gt; Int * पृथक डायगेट्स (इंट एन) {इंट * अंक, संख्याऑफ़डिगेट्स = 0, टेम्पप = एन; जबकि (अस्थायी) {temp / = 10; numberOfDigits ++; } अंक = (इंट *) मॉलोक (साइज़फ (इंट) * (नंबर ओफ़ डिजीज + 1)); अंकों [numberOfDigits] = -1; जबकि (numberOfDigits & gt; = 0) {अंक [- संख्याऑफ़डेटाट] = n% 10; N / = 10; } वापसी अंक; } Int main (शून्य) {int n, * na; Scanf ("% d", & amp; n); ना = अलग डायगेट्स (एन); If (! Na) {printf ("स्मृति को आवंटित नहीं किया जा सकता! \ N"); वापसी 1; } जबकि (* ना! = -1) printf ("% d", * na ++); नि: शुल्क (ना); वापसी 0; } मैंने एक संख्या को अपने अंकों में अलग करने के लिए एक फ़ंक्शन लिखी है। जब भी मैं स्मृति को डीलोकेट नहीं करता, तब भी कुछ ठीक काम करता है; लेकिन जब मैं स्मृति को निरूपित करने की कोशिश करता हूं, जो गतिशील रूप से आवंटित किया जाता है, तो नि: शुल्क () फ़ंक्शन के साथ मुझे एक रनटाइम त्रुटि मिलती है। क्या मैं गलत कर रहा हूं?
आप na को बढ़ाना है, टी मुफ्त क्या malloc वापस आ गया (लेकिन सूचक numberOfDigits यह पिछले स्थानों)। इसके बजाय एक स्पष्ट पूर्णांक इंडेक्स का उपयोग करें। ओह, और malloc () से int * का रिटर्न मान मत डालें। ।
Comments
Post a Comment