Friday, 15 July 2011

c - Moving pointers memory allocation from main() to function and using pointer in other functions -


अरे मैं सूचक स्मृति आवंटन d = (deque *) malloc (sizeof (deque)) को स्थानांतरित करने की कोशिश कर रहा हूँ ; पहले कॉल में शून्य initDeque () कहा जाता है। मैंने मुख्य में घोषणा छोड़ने की कोशिश की और समारोह में मेमोरी आवंटित की, लेकिन कार्यक्रम केवल डेक को शुरू करने के बाद क्रैश करता है और मैं अन्य कार्यों में सूचक का उपयोग नहीं कर सकता।

यहां कोड है :

  int main () {int x; डेक * डी; डी = (डेक *) मॉलोक (आकारफ (डेक)); initDeque (घ); putFront (घ, 10);  

और फ़ंक्शन, जहां मैं सूचक के लिए स्मृति आवंटन को स्थानांतरित करना चाहता हूं:

  शून्य initDeque (deque * d) {// नया डेक बनाएं / d = (डेक *) मॉलोक (आकारफ (डेक)); Printf ("डेक शुरू करना \ n"); डी & gt; सामने = शून्य; डी & gt; रियर = शून्य; }  

कार्यक्रम अच्छा चल रहा है यदि घोषणापत्र और आवंटन मुख्य () में है, लेकिन जब मैं आवंटन शून्य initDeque

तर्क (भी संकेत) सी में हैं।

तो सूचक वापस :

  deque * make_queue () {// नया डेक डेक बनाएं * d = malloc (sizeof (deque)); अगर (! डी) {झूठ ("मॉलोक"); निकास (EXIT_FAILURE); }; Printf ("डेक शुरू करना \ n"); डी & gt; सामने = शून्य; डी & gt; रियर = शून्य; वापसी डी; }  

और कॉल करें d = make_queue (); अपने मुख्य की शुरुआत में; malloc हमेशा विफलता के लिए परीक्षण करते समय

वैकल्पिक रूप से, एक संकेतक का पता पास करें, जैसा कि

वाक्विएज पर पढ़ें । मुफ्त को उचित रूप से कॉल करने के लिए मत भूलना डीबगिंग के लिए, यदि उपलब्ध हो तो उपयोग करें से बचें (और डबल मुक्त -s)। जब आप सी में अधिक परिपक्व होते हैं, तो wikipage को पढ़ें, शायद कुछ मामलों में उपयोग करने पर विचार करें।


No comments:

Post a Comment