हां, यह शैली का मामला है, क्योंकि आप sizeof(char)
हमेशा एक होने की उम्मीद करेंगे।
दूसरी तरफ sizeof(foo)
का उपयोग करने के लिए malloc
का उपयोग करने के लिए यह बहुत मुहावरे है, और सबसे महत्वपूर्ण बात यह है कि यह कोड स्वयं दस्तावेज़िंग करता है।
रखरखाव के लिए भी बेहतर है। आप char
से wchar
का उपयोग करने जा रहे थे, तो आप ज्यादा सोचा बिना
wchar *p = malloc(sizeof(wchar) * (len + 1));
करने के लिए स्विच चाहते हैं। जबकि कथन char *p = malloc( len + 1 );
को परिवर्तित करने के लिए और अधिक विचार की आवश्यकता होगी। यह मानसिक उपरि को कम करने के बारे में सब कुछ है।
और जैसा कि @Nyan एक टिप्पणी में पता चलता है, तो आप भी शून्य समाप्त तार के लिए
type *p = malloc(sizeof(*p) * (len + 1));
कर सकता है और
type *p = malloc(sizeof(*p) * len));
साधारण बफ़र्स के लिए।
http://stackoverflow.com/questions/1011806/is-it-necessary-to-multiply-by-sizeof-char-when का डुप्लिकेट -मैनिपुलेटिंग-मेमोरी हालांकि मैं वहां स्वीकृत उत्तर से असहमत हूं (मैं आकार (char) को छोड़ना पसंद करता हूं) – user85509