1. sizeof
अपरेटरको सारांश
C भाषा को sizeof
अपरेटरले, डेटा प्रकार वा चलले ओगट्ने मेमोरी साइजलाई बाइट इकाइमा प्राप्त गर्न प्रयोग गरिन्छ। मेमोरी व्यवस्थापन र डेटा संरचनाको अनुकूलनमा अनिवार्य उपकरण हो, र sizeof
प्रयोग गरेर प्लेटफर्म-निर्भर नहुनु कोड लेख्न सम्भव छ।
2. sizeof
ऑपरेटर के हो?
sizeof
को आधारभूत प्रयोग
sizeof
अपरेटरले निर्दिष्ट डेटा प्रकार वा भेरिएबलको मेमोरी साइज बाइटमा फिर्ता गर्छ। उदाहरणका लागि, आधारभूत डेटा प्रकारहरू(int
, char
, float
आदि)को साइज जाँच्दा यसलाई प्रयोग गरिन्छ।
int a;
printf("%zun", sizeof(a)); // int प्रकारको आकार आउटपुट
printf("%zun", sizeof(int)); // int डेटा प्रकारको आकार प्रत्यक्ष आउटपुट
sizeof
को विशेषताहरू
sizeof
कम्पाइल समयमा मूल्याङ्कन गरिने भएकाले, प्रोग्रामको कार्यसम्पादन गति मा असर गर्दैन। साथै, विभिन्न प्लेटफर्महरूमा डेटा प्रकारको साइजको भिन्नतालाई समेट्न सकिन्छ, जसले उच्च पोर्टेबल कोड लेख्दा उपयोगी हुन्छ।
3. sizeof
को प्रयोगको आधारभूत
एरे र sizeof
एरेको सम्पूर्ण आकार गणना गर्दाsizeof
प्रयोग गर्दा, एरेको तत्व संख्या र प्रत्येक तत्वको आकारलाई गुणा गरेको मान फिर्ता हुन्छ। एरेभित्रको तत्व संख्या प्राप्त गर्दा पनि यो उपयोगी हुन्छ।
int arr[10];
printf("%zun", sizeof(arr)); // पूर्ण ऐरेको आकार प्रिन्ट गर्नुहोस्
printf("%zun", sizeof(arr) / sizeof(arr[0])); // ऐरेको तत्व संख्या गणना गर्नुहोस्
पॉइंटर र sizeof
पॉइंटरमाsizeof
प्रयोग गर्दा, पॉइंटरको आफैँको आकार फिर्ता हुन्छ। पॉइंटरले संकेत गर्ने डेटा आकारसँग यो फरक हुन्छ, त्यसैले यस बिन्दुमा ध्यान दिनु आवश्यक छ।
int *ptr;
printf("%zun", sizeof(ptr)); // प्वाइंटरको आफ्नै आकार आउटपुट
printf("%zun", sizeof(*ptr)); // प्वाइंटरले सूचाउने डाटाको आकार आउटपुट
4. संरचनामा sizeof
को प्रयोग
संरचनाको आकार प्राप्त गर्ने
संरचना विभिन्न डेटा प्रकारका सदस्यहरूलाई समेट्ने हो, र sizeof
प्रयोग गरेर यसको मेमोरी आकार प्राप्त गर्न सकिन्छ। संरचनाको आकार प्रत्येक सदस्यको आकारको योगसँगै, मेमोरी अलाइनमेंटको प्रभाव पनि पाउँछ।
typedef struct {
char name[50];
int age;
} Person;
printf("%zun", sizeof(Person)); // संरचनाको आकार आउटपुट
मेमोरी अलाइनमेंट द्वारा आकारको परिवर्तन
संरचनाको आकार मेमोरी अलाइनमेंटको प्रभावले सदस्यहरूको आकारको योगभन्दा ठूलो हुन सक्छ। कम्पाइलरले प्रभावकारी मेमोरी पहुँचलाई सम्भव बनाउन सदस्यहरूबीच प्याडिङ् थप्न सक्छ।

5. sizeof
र मेमोरी अलाइनमेंट
मेमोरी अलाइनमेंटको महत्व
मेमोरी अलाइनमेंटले डेटा को प्रभावकारी पहुँचलाई सम्भव बनाउने लागि मेमोरी विन्यासलाई समायोजन गर्ने कार्यलाई जनाउँछ। यदि उपयुक्त अलाइनमेंट गरिएन भने, मेमोरी पहुँच अप्रभावी हुन्छ, र प्रोग्रामको प्रदर्शनमा प्रभाव पार्न सक्छ।
_Alignof
अपरेटरसँगको भिन्नता
sizeof
ले मेमोरी साइज फिर्ता गर्छ, तर _Alignof
अपरेटरले डेटा प्रकारले आवश्यक पर्ने न्यूनतम अलाइनमेंट फिर्ता गर्छ। यसलाई प्रयोग गरेर, संरचनाका प्रत्येक सदस्य मेमोरीमा कसरी विन्यासित हुन्छन् भन्ने कुरा गहिरो रूपमा बुझ्न सकिन्छ।
typedef struct {
char a;
int b;
} AlignedStruct;
printf("%zun", sizeof(AlignedStruct)); // संरचनाको आकार प्रिन्ट
printf("%zun", _Alignof(AlignedStruct)); // संरचनाको संरेखण प्रिन्ट
6. sizeof
को प्रयोग सम्बन्धी ध्यान दिनुपर्ने बुँदाहरू र सर्वोत्तम अभ्यासहरू
प्लेटफर्महरू बीचको अनुकूलता
विभिन्न प्लेटफर्महरू वा कम्पाइलरहरूमा, डेटा प्रकारको आकार फरक हुन सक्छ।sizeof
प्रयोग गरेर, प्लेटफर्ममा निर्भर नगर्ने कोड सिर्जना गर्न सकिन्छ, र अनुकूलता कायम राख्न सकिन्छ।
डायनामिक मेमोरी आवंटनमा sizeof
डायनामिक मेमोरी आवंटनमा、malloc
फङ्क्शन रsizeof
लाई संयोजन गरेर, उपयुक्त मेमोरी आकार सुरक्षित गर्न सकिन्छ। यसले मेमोरी अभाव वा बफर ओभरफ्लो जस्ता समस्याहरूलाई रोक्छ।
int *arr = (int *)malloc(10 * sizeof(int)); // गतिशील मेमोरी आवंटन
7. sizeof
को उपयोग उदाहरण
मेमोरी व्यवस्थापनको अनुकूलन
sizeof
लाई प्रयोग गरेर मेमोरी बफरको आकारलाई गतिशील रूपमा गणना गरी, प्रभावकारी मेमोरी व्यवस्थापन हासिल गर्न सकिन्छ। उदाहरणका लागि, फाइल पढ्ने वा नेटवर्क संचारमा डेटा भण्डारण गर्ने बफर बनाउँदा, सही आकारलाई आवंटन गर्नु महत्त्वपूर्ण हुन्छ।
char *buffer = (char *)malloc(100 * sizeof(char)); // बफर आकारको निर्धारण
डेटा संरचनाको अनुकूलन
डेटा संरचना डिजाइन गर्दा sizeof
लाई प्रयोग गरेर प्रत्येक डेटा प्रकारको मेमोरी प्रयोगलाई जाँच गरी, मेमोरी दक्षता सुधार गर्न सकिन्छ। यसले अधिक प्रभावकारी प्रोग्राम बनाउने सम्भावना प्रदान गर्दछ।
8. सारांश
sizeof
अपरेटर C भाषामा मेमोरी व्यवस्थापनको आधारभूत उपकरण हो, र सुरक्षित र प्रभावकारी कार्यक्रम निर्माण गर्न आवश्यक छ। यस लेखमा, sizeof
को आधारभूत प्रयोगबाट संरचना र मेमोरी अलाइनमेंटसँगको सम्बन्ध, बेस्ट प्राक्टिससम्म विस्तृत रूपमा व्याख्या गरिएको छ। उपयुक्त रूपमा sizeof
लाई प्रयोग गरेर, उच्च पोर्टेबिलिटीको बलियो कोड लेख्न सकिन्छ।