जब हम मेमोरी आवंटित करने के लिए malloc()
का उपयोग करते हैं, तो क्या हमें आकार दो आकार में देना चाहिए? या हम सिर्फ सटीक आकार देते हैं जिसकी हमें आवश्यकता है?
क्या दो की शक्ति में स्मृति आवंटित करना बेहतर है?
//char *ptr= malloc(200);
char *ptr= malloc(256);//instead of 200 we use 256
यदि यह आकार जो दो की शक्ति में है देने के लिए बेहतर है की तरह, उस के लिए क्या कारण है? यह बेहतर क्यों है?
धन्यवाद
संपादित
मेरी भ्रम का कारण जोएल के ब्लॉग से बोली पीछा कर रहा है Back to Basics
स्मार्ट प्रोग्रामर की हमेशा आवंटन ब्लॉक से malloc की संभावित distruption को कम मेमोरी जो कि आकार में 2 की शक्तियां हैं। तुम्हें पता है , 4 बाइट, 8 बाइट्स, 16 बाइट्स, 18446744073709551616 बाइट्स, आदि कारण है कि जो कोई लेगो के साथ खेलता है करने के लिए सहज ज्ञान युक्त होना चाहिए के लिए, यह अजीब विखंडन की मात्रा को मुक्त में पर चला जाता है कम से कम श्रृंखला। यद्यपि यह कचरे की जगह जैसा प्रतीत हो सकता है, यह को देखना भी आसान है, यह अंतरिक्ष को 50% से अधिक कैसे बर्बाद नहीं करता है। तो आपका प्रोग्राम का उपयोग दो गुना अधिक स्मृति से अधिक नहीं करता है क्योंकि की आवश्यकता है, जो कि सौदा बड़ा नहीं है।
क्षमा करें, मुझे पहले उपरोक्त उद्धरण पोस्ट करना चाहिए था। मैं क्षमाप्रार्थी हूं!
अधिकतर जवाब, अब तक कहते हैं कि दो की शक्ति में स्मृति आवंटित करना एक बुरा विचार है, फिर किस परिदृश्य में जोएल के बिंदु malloc()
का पालन करना बेहतर होगा? उसने ऐसा क्यों कहा? क्या ऊपर उद्धृत सुझाव अब अप्रचलित है?
कृपया इसे समझाएं।
धन्यवाद
यह बेहतर नहीं है। यह स्मृति बर्बाद करता है। – Adrian
मेरा अनुमान है कि कुछ प्लेटफॉर्म पर, malloc() पृष्ठ आवंटन आवंटन न्यूनतम आवंटन-आकार के साथ कर सकता है।मैंने इसे और अधिक नहीं देखा है, लेकिन मुझे पता है कि कई कस्टम मेमोरी कार्यान्वयन यह करते हैं। – Simon