c - Array of pointers initialization -
चार ** arr; Arr = (चार **) कॉलोक (1, आकारफ (चार *)); के लिए (i = 0; i & lt; 16; i ++) यदि (एआरई [i] = (चार *) कॉलोक (1, 2 * आकार (चार) == NULL) ("स्मृति को arr [i] के लिए आवंटित नहीं किया जा सकता है ",% D);
उपरोक्त कोड लूप के अंदर एक त्रुटि फेंकता है, जब मैं आईआरआर [i] को आवंटित करने की कोशिश कर रहा हूं। क्या इस आवंटन में कुछ भी गलत है मूल रूप से, मैं 2 लंबाई की 16 तारों को संग्रहित करना चाहता हूँ। मैंने इसे पॉइंटर्स के सरणी के साथ भी कोशिश की है (char * arr [16]) मैंने मॉलोक () और कॉलोक () का उपयोग करके दोहरे सूचक इन्टरिलाइज़ेशन पर संसाधनों की खोज करने का प्रयास किया है और कई नहीं मिल सके यदि आप कुछ लिंक बता सकते हैं, तो इसकी सराहना की जाएगी। धन्यवाद।
आपको 16 पॉइंटर्स के लिए पर्याप्त मेमोरी आवंटित करने की आवश्यकता है, न कि केवल एक।
< प्री> arr = (चार **) कॉलोक (16, आकारफ (चार *)); आपके कोड के साथ क्या होता है कि arr
में केवल एक पॉइंटर के लिए पर्याप्त मेमोरी है, इसलिए arr [0] = & lt; कुछ & gt;
सही है, लेकिन arr [1]
और उच्च स्मृति छू रही है जो प्रोग्राम से संबंधित नहीं है।
इसके अतिरिक्त, जिस तरह से आप स्ट्रिंग पॉइंटर्स को असाइन करते हैं वह गलत है। आप 0 या 1 मान निर्दिष्ट कर रहे हैं, इस पर निर्भर करते हुए कि यदि calloc
है NULL
आपको कोष्ठकों को जोड़ने की आवश्यकता है:
यदि ((arr [i] = (चार *) कॉलोक (1, 2 * आकार (char))) == NULL ("मेमोरी नहीं कर सकते एआर [% d] के लिए आवंटित किया जाना चाहिए ", i);
एर भी बेहतर:
के लिए (i = 0; i & lt; 16; i ++) {arr [i] = (चार *) कॉलक ( 1, 2 * आकार (चार)); अगर (एआरआर [आई] == नल) {दर्पण ("मेमोरी को आईआर [% d] के लिए आवंटित नहीं किया जा सकता है"), i); }}
Comments
Post a Comment