संभव डुप्लिकेट:
c difference between malloc and calloc
Why does calloc require two parameters and malloc just one?सी कार्यों में "एनएमईएम" और "आकार" पैरामीटर रखने की क्या आवश्यकता है?
मैं कई सी कार्यों के साथ यह ध्यान दिया है विशेष रूप से जो कि स्मृति या फ़ाइल आपरेशनों के साथ सौदा कहता है, लेकिन उन सभी को दोनों का उपयोग मापदंडों। उदाहरण के लिए malloc एक पैरामीटर पारित किया गया है, मेमोरी स्पेस के बाइट्स में आकार की आवश्यकता है। दूसरी तरफ कैलकोक दो मानकों को पारित किया जाता है, तत्व के बाइट्स में आकार और तत्वों की संख्या (आकार और एनएमईएम)। ऐसे अन्य कार्य भी हैं जो इन आकारों और एनएमईएम पैरामीटर का भी उपयोग करते हैं।
मूलतः calloc कॉल malloc बुला (nmem आकार) के रूप में स्मृति का एक ही राशि आवंटित जाएगा, ताकि वह सब वास्तव में क्या हो रहा है तारांकित () एक अल्पविराम (,) के साथ बदल दिया जाता है। कम से कम यह सब मैं उच्च स्तर से बता सकता हूं कि मैं काम कर रहा हूं। मुझे कॉलोक कॉल करने में कोई फर्क नहीं पड़ता (1, एनएमई आकार), कॉलोक (एनएमई आकार, 1), या कॉलोक (एनएमईएम, आकार)।
क्या वास्तव में निम्न स्तर पर कुछ ऐसा हो रहा है जो उदाहरण कॉलक (1, एनएमईएम * आकार) को कॉलोक (एनएमईएम, आकार) से मौलिक रूप से अलग करता है?
संपादित करें: मुझे कॉलोक और मॉलोक के बीच कार्यात्मक अंतर पता है। मुझे दिलचस्पी है कि पैरामीटर में मतभेद क्यों हैं। ऐसे अन्य कार्य हैं जो कुल आकार (फ़्रेड, फ़्राइट, इत्यादि) के लिए 2 आकार पैरामीटर का उपयोग करते हैं। मैं विशिष्ट कार्यों से चिंतित नहीं हूं बल्कि फ़ंक्शन में उपयोग किए जाने वाले कुल आकार के लिए दो पैरामीटर क्यों हैं, जब अनिवार्य रूप से कुल आकार दो मानकों को एक साथ गुणा करता है। मुझे लगता है कि जब मैं इन कार्यों का उपयोग करता हूं, तो मैं उस आकार का उपयोग करता हूं जिसे मुझे "आकार" पैरामीटर में और "एनएमईएम" (कभी-कभी "गिनती" इत्यादि) के लिए '1') की आवश्यकता होती है।
मेमोरी संरेखण सुधार हुआ है "एक अशक्त सूचक (0) वापसी" (प्लेटफार्मों पर जहां यह महत्वपूर्ण है) दो पैरामीटर फॉर्म के साथ। – wallyk
'malloc() 'और' calloc() 'के रूप में आपको यहां एक समेकित अंतर मिलता है: http://stackoverflow.com/a/1585987/694576 ... - वैसे भी, क्या आप हमें अन्य कार्यों पर इंगित करना चाहते हैं , बाद के दो के अलावा, आपको दिमाग में है। – alk
@Paciv यह काफी डुप्लिकेट नहीं है क्योंकि उस प्रश्न और उसके उत्तर पैरामीटर की संख्या में अंतर को संबोधित नहीं करते हैं। –