मेरे पास एक संरचना malloc() 'd है, और उनका उपयोग करने के बाद, मैं इसे मुक्त करना चाहता हूं, लेकिन मेरा प्रोग्राम यहां जमा हो जाता है। कोई मुझे बता सकता हैं मुझसे क्या गलती हो रही है?कैसे मुक्त() एक malloc() 'डी संरचित सही ढंग से?
struct data
{
char *filename;
char *size;
};
//primarypcs is a long type variable
struct data *primary = (struct data *)malloc(primarypcs * sizeof(struct data));
memset(primary, 0, sizeof(struct data *) * primarypcs);
...
...
...
for (i = 0; i < primarypcs; i++)
{
free(primary[i].filename); //<----my program freezes here
free(primary[i].size); //<----or here
}
free(primary);
अग्रिम धन्यवाद:
यहाँ मेरी कोड है!
kampi
संपादित करें:
कैसे कर सकते हैं मैं फ़ाइल नाम और आकार के लिए सही ढंग से malloc स्मृति?
EDIT2:
क्षमा करें, लेकिन मैं जल्दी में था, और मैं आप सभी जानकारी है कि आप की जरूरत बताया नहीं था। मुझे अब यह करने दो :) मूल रूप से, मैं एक एप्लीकेशन बनाना चाहता हूं, जो दो दिए गए ड्राइव/फ़ोल्डरों की फ़ाइल सूची प्राप्त करता है और फिर उनकी तुलना करता है। मैंने सोचा (और अभी भी करते हैं), सबसे आसान तरीका यह है कि, जब मैं उपरोक्त वर्णित संरचना में फ़ाइल नाम और उनके आकार को संग्रहीत करता हूं। तो मुझे फाइलनाम और आकार और संरचना के लिए भीड़ के लिए गतिशील रूप से स्मृति आवंटित करना है (मुझे लगता है कि वे इसे क्या कहते हैं)।
मुझे आपको 'फ़ाइल नाम' और 'आकार' के लिए स्मृति आवंटित नहीं दिख रहा है। –
हाँ, आपके कोड में एक बग है: मॉलोक में आप आकार (संरचना डेटा) का उपयोग करते हैं जो सही लगता है, फिर भी याद में आप आकार (संरचना डेटा *) का उपयोग करते हैं जो आकार का आधा है। इसका मतलब है कि आपके पास केवल शून्य-आधा स्मृति है और जब आप इसे मुक्त करने का प्रयास करते हैं तो स्मृति का अंतिम 1/2 बारफ होगा। उत्तर मुफ्त (प्राथमिक) होना चाहिए; और कुछ और नहीं – cmroanirgo
यदि यह सी ++ है, तो आपको नए का उपयोग करना चाहिए और हटा देना चाहिए। – Xorlev