C Programming: malloc() inside another function -


मुझे malloc () एक अन्य फ़ंक्शन के अंदर के साथ सहायता चाहिए >

मैं एक संकेतक और आकार से मेरे मुख्य () और मैं उस पॉइंट को गतिशील रूप से malloc () का उपयोग करके उस फ़ंक्शन से प्रयोग करने के लिए मेमोरी आवंटित करना चाहूंगा, लेकिन जो मैं देखता हूं वह है ... जो आवंटित हो रही स्मृति, पॉइंटर के लिए है मेरे कथित फ़ंक्शन के भीतर घोषित किया जाता है और पॉइंटर के लिए नहीं, जो main () के अंदर है।

कैसे मैं किसी फ़ंक्शन को एक पॉइंटर पास कर सकता हूं और पारित पॉइंटर के लिए मेमोरी आवंटित कर सकता हूं फ़ंक्शन के अंदर से ?


मैंने निम्नलिखित कोड लिखा है और मुझे नीचे दिखाए गए अनुसार आउटपुट मिलता है।

स्रोत:

  int main () {अहस्ताक्षरित चार * input_image; अहस्ताक्षरित int bmp_image_size = 262144; यदि (alloc_pixels (input_image, bmp_image_size) == नल) printf ("\ nPoint2: स्मृति आवंटित:% d बाइट्स", _ msize (input_image)); या else printf ("\ n पृष्ठ 3: मेमोरी नहीं आवंटित"); वापसी 0; } हस्ताक्षरित char alloc_pixels (अहस्ताक्षरित चार * ptr, अहस्ताक्षरित पूर्ण आकार) {हस्ताक्षरित चार स्थिति = NO_ERER; Ptr = NULL; Ptr = (अहस्ताक्षरित चार *) malloc (आकार); If (ptr == NULL) {status = error; नि: शुल्क (PTR); Printf ("\ nERROR: मेमोरी आवंटन सफलतापूर्वक पूरा नहीं हुआ!"); } Printf ("\ nPoint1: मेमोरी आवंटित:% d बाइट्स", _ एमएसize (पीटीआर)); वापसी स्थिति; }  

प्रोग्राम आउटपुट:

  बिंदु 1: मेमोरी आवंटित पीटीआर: 262144 बाइट्स प्वाइंट 2: मेमोरी आवंटित इनपुट_आईटेज: 0 बाइट्स   < / Div> 

आपको एक पॉइंटर को अपने फ़ंक्शन के पैरामीटर के रूप में पास करने की आवश्यकता है।

  Int main () {अहस्ताक्षरित चार * input_image; अहस्ताक्षरित int bmp_image_size = 262144; यदि (alloc_pixels (और इनपुट_इजेशन, बीएमपी_इमेज_आकार) == NO_ERROR) printf ("\ nPoint2: मेमोरी आवंटित:% d बाइट्स", _ एमएसआईईएसई (इनपुट_इज)); या else printf ("\ n पृष्ठ 3: मेमोरी नहीं आवंटित"); वापसी 0; } हस्ताक्षरित char alloc_pixels (अहस्ताक्षरित चार ** ptr, अहस्ताक्षरित पूर्ण आकार) {हस्ताक्षरित चार स्थिति = NO_ERER; * Ptr = NULL; * Ptr = (अहस्ताक्षरित चार *) malloc (आकार); If (* ptr == NULL) {status = error; नि: शुल्क (* ptr); / * यह रेखा पूरी तरह अनावश्यक है * / printf ("\ nERROR: मेमोरी आवंटन सफलतापूर्वक पूरा नहीं हुआ!"); } Printf ("\ nPoint1: मेमोरी आवंटित:% d बाइट्स", _ एमएसize (* ptr)); वापसी स्थिति; }  

Comments