सी में गतिशील आवंटन के बाद ऐरे का आकार निर्धारित करना
सी में, नए ऑपरेटर का उपयोग करके गतिशील रूप से आवंटित किए गए ऐरे स्वाभाविक रूप से अपने आकार को प्रोग्रामेटिक रूप से उजागर नहीं करते हैं। यह प्रश्न इस अवलोकन से उठता है कि मेमोरी को प्रभावी ढंग से हटाने के लिए डिलीट[] को आवंटित सरणी के आकार के बारे में पता होना चाहिए।
ऐरे आकार प्राप्त करने के लिए कोई अंतर्निहित फ़ंक्शन क्यों नहीं?
स्टैक पर घोषित सरणियों के विपरीत, जिनका आकार sizeof() का उपयोग करके निर्धारित किया जा सकता है, संकलन के दौरान गतिशील रूप से आवंटित सरणियों का आकार अज्ञात है। ऐसा इसलिए है क्योंकि रनटाइम या ऑपरेटिंग सिस्टम का मेमोरी मैनेजर आवंटित मेमोरी को प्रबंधित करता है, कंपाइलर नहीं। sizeof() एक संकलन-समय स्थिरांक के रूप में कार्य करता है और गतिशील रूप से आवंटित सरणियों के आकार का गतिशील रूप से मूल्यांकन नहीं कर सकता है।
वैकल्पिक रणनीतियाँ
हालांकि C एक अंतर्निहित प्रदान नहीं करता है सरणी के आकार को प्राप्त करने के लिए फ़ंक्शन, वैकल्पिक दृष्टिकोण हैं:
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3