C लाइब्रेरी में malloc() फ़ंक्शन उदाहरण के साथ
सी में malloc क्या है?
malloc() फ़ंक्शन मेमोरी आवंटन के लिए है। यह एक ऐसा फ़ंक्शन है जिसका उपयोग मेमोरी के ब्लॉक को गतिशील रूप से आवंटित करने के लिए किया जाता है। यह निर्दिष्ट आकार की मेमोरी स्पेस को सुरक्षित रखता है और मेमोरी लोकेशन की ओर इशारा करते हुए शून्य पॉइंटर लौटाता है। लौटाया गया पॉइंटर आमतौर पर void प्रकार का होता है। इसका मतलब है कि हम किसी भी पॉइंटर को malloc फ़ंक्शन असाइन कर सकते हैं।
वाक्य - विन्यास
ptr = (cast_type *) malloc (byte_size);
यहाँ,
- ptr cast_type का सूचक है.
- malloc फ़ंक्शन byte_size की आवंटित मेमोरी के लिए एक पॉइंटर लौटाता है।
Example: ptr = (int *) malloc (50)
जब यह कथन सफलतापूर्वक निष्पादित होता है, तो 50 बाइट्स का मेमोरी स्पेस आरक्षित हो जाता है। आरक्षित स्थान के पहले बाइट का पता int प्रकार के पॉइंटर ptr को असाइन किया जाता है।
malloc कार्यान्वयन का एक अन्य उदाहरण देखें:
#include <stdlib.h> int main(){ int *ptr; ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */ if (ptr != NULL) { *(ptr + 5) = 480; /* assign 480 to sixth integer */ printf("Value of the 6th integer is %d",*(ptr + 5)); } }
आउटपुट:
Value of the 6th integer is 480
- सूचना है कि आकार(*ptr) के स्थान पर प्रयोग किया गया आकार(int) बाद में जब *ptr घोषणा को किसी भिन्न डेटा प्रकार में टाइपकास्ट किया जाता है तो कोड को अधिक मजबूत बनाने के लिए।
- यदि मेमोरी पर्याप्त नहीं है तो आवंटन विफल हो सकता है। इस मामले में, यह एक NULL पॉइंटर लौटाता है। इसलिए, आपको NULL पॉइंटर की जांच करने के लिए कोड शामिल करना चाहिए।
- ध्यान रखें कि आवंटित मेमोरी सन्निहित है और इसे एक सरणी के रूप में माना जा सकता है। हम कोष्ठक [ ] का उपयोग करने के बजाय सरणी तत्वों तक पहुँचने के लिए पॉइंटर अंकगणित का उपयोग कर सकते हैं। हम सरणी तत्वों को संदर्भित करने के लिए + का उपयोग करने की सलाह देते हैं क्योंकि वृद्धि ++ या += का उपयोग करने से सरणी द्वारा संग्रहीत पता बदल जाता है। सूचक.
Malloc फ़ंक्शन का उपयोग कैरेक्टर डेटा प्रकार के साथ-साथ संरचनाओं जैसे जटिल डेटा प्रकारों के साथ भी किया जा सकता है।