malloc
या new
की अंतर्निहित कार्यान्वयन अनिवार्य रूप से स्मृति अपने चर के लिए आवंटित के आकार का ट्रैक रखने चाहिए। दुर्भाग्यवश, आवंटित ब्लॉक के आकार को पाने का कोई मानक तरीका नहीं है। कारण इस तथ्य के कारण है कि सभी मेमोरी ब्लॉक को गतिशील रूप से आवंटित नहीं किया जाता है, इसलिए केवल उस गतिशील आवंटन के लिए काम करने वाला फ़ंक्शन इतना उपयोगी नहीं होता है।
void fillwithzero(int* array) {
unsigned int size = getsize(array); // return 0 for statically allocated array ??
for(int i = 0; i < size; i++) {
array[i] = 0;
}
}
हम कहते हैं कि हम getsize
समारोह है कि करने में सक्षम है की जादुई गतिशील आवंटित सरणी के आकार मिल करते हैं। हालांकि, यदि आप किसी स्थिर सरणी के पॉइंटर भेजते हैं, या अन्य सरणी (उदा। बाहरी फ़ंक्शन) द्वारा आवंटित कुछ सरणी fillwithzero
पर भेजते हैं, तो यह फ़ंक्शन काम नहीं करेगा। यही कारण है कि अधिकांश सी फ़ंक्शन जो सरणी को स्वीकार करता है, सरणी के आकार के साथ सरणी के आकार या अधिकतम आकार को भेजने के लिए कॉलर आवश्यक होता है।