मैं अपनी परियोजना के लिए किसी और के C ++ कोड की समीक्षा कर रहा हूं जो उच्च-प्रदर्शन कंप्यूटिंग के लिए MPI का उपयोग करता है (10 ^ 5 - 10 ^ 6 कोर)। कोड का उद्देश्य विभिन्न आर्किटेक्चर पर विभिन्न मशीनों के बीच संचार की अनुमति देना है। उन्होंने एक टिप्पणी लिखी है जिसमें कहा गया है:
हम सामान्य रूप से उपयोग करेंगे
newऔरdelete, लेकिन यहां मैं उपयोग कर रहा हूंmallocऔरfree। यह आवश्यक है क्योंकि कुछ संकलक डेटाnewका उपयोग करते समय अलग-अलग तरीके से पैड करेंगे , जिससे विभिन्न प्लेटफार्मों के बीच डेटा स्थानांतरित करने में त्रुटि हो सकती है। ऐसा नहीं होता हैmalloc।
यह मानक newबनाम mallocप्रश्नों से मुझे ज्ञात किसी भी चीज के साथ फिट नहीं है ।
नए / डिलीट और मॉलोक / फ्री में क्या अंतर है? इस विचार से संकेत मिलता है कि संकलक किसी वस्तु के आकार की गणना अलग-अलग तरीके से कर सकता है (लेकिन तब वह उपयोग करने से अलग क्यों होता है sizeof)।
मॉलॉक और प्लेसमेंट नया बनाम नया एक काफी लोकप्रिय सवाल है, लेकिन केवल उन newकंस्ट्रक्टरों का उपयोग करने के बारे में बात mallocकरता है, जहां यह प्रासंगिक नहीं है।
मॉलोक संरेखण को कैसे समझता है? कहते हैं कि स्मृति को newया तो ठीक से संरेखित करने की गारंटी है या mallocजो मैंने पहले सोचा था वह है।
मेरा अनुमान है कि उसने अतीत में कुछ समय के लिए अपने स्वयं के बग को गलत बताया newऔर mallocउसे घटाया और अलग-अलग मात्रा में पैडिंग दी, जो मुझे लगता है कि शायद सच नहीं है। लेकिन मुझे Google या किसी भी पिछले प्रश्न का उत्तर नहीं मिल रहा है।
मेरी मदद करो, StackOverflow, तुम मेरी ही उम्मीद कर रहे हैं!
mallocऔर new, जैसा newकि कुछ वातावरण में एक ब्लॉक आवंटित करते हैं, कुछ डेटा को शुरुआत में जोड़ता है और इस डेटा के ठीक बाद एक पॉइंटर को एक स्थान पर लौटाता है। (मैं डेटा ब्लॉक के अंदर अन्य लोगों से सहमत हूं, mallocऔर newएक ही तरह के पैडिंग का उपयोग करना चाहिए।)