जीसीसी 4.4.1 C89का उपयोग sizeof
मैं निम्नलिखित कोड का टुकड़ा है:
#include <stdlib.h>
#include <stdio.h>
char *buffer = malloc(10240);
/* Check for memory error */
if(!buffer)
{
fprintf(stderr, "Memory error\n");
return 1;
}
printf("sizeof(buffer) [ %d ]\n", sizeof(buffer));
हालांकि, sizeof (बफर) हमेशा प्रिंट 4. मैं एक चार जानते हैं कि * केवल 4 बाइट है। हालांकि, मैंने 10kb के लिए स्मृति आवंटित की है। तो आकार 10240 नहीं होना चाहिए? मुझे आश्चर्य है कि क्या मैं यहाँ सोच रहा हूँ?
किसी भी सुझाव के लिए बहुत धन्यवाद,
अधिकांश भाग के लिए सी कंपाइलर (किसी भी संस्करण के लिए) को कोई विचार नहीं है कि फ़ंक्शन 'malloc' वास्तव में क्या करता है या इसका उपयोग किया जाता है। यह सब जानता है कि यह एक हस्ताक्षरित पूर्णांक (size_t) लेता है और एक शून्य सूचक देता है। यह यादृच्छिक संख्या जेनरेटर के बीज के लिए इसका पैरामीटर का उपयोग कर सकता है और सभी कंपाइलर परवाह के लिए एक यादृच्छिक संख्या को '(शून्य *)' में डाल सकता है, इसलिए संकलक यह नहीं जान सकता कि स्मृति का आकार क्या है। – nategoose