new
का उपयोग करें। आपको C12+ प्रोग्राम में malloc
का उपयोग करने की आवश्यकता नहीं है, जब तक कि यह कुछ सी कोड के साथ सहभागिता नहीं कर रहा हो या आपके पास विशेष तरीके से स्मृति को प्रबंधित करने का कोई कारण हो।
node = malloc(sizeof(Node))
का आपका उदाहरण एक बुरा विचार है, क्योंकि Node
के निर्माता (यदि कोई मौजूद है) के नाम से जाना नहीं होता है, और बाद में एक delete node;
अपरिभाषित परिणाम होगा।
char *buffer = new char[1024];
, या, अधिमानतः कुछ इस तरह:
आप एक वस्तु बाइट्स की एक बफर के बजाय की जरूरत है, तो आप आम तौर पर कुछ इस तरह के लिए करना चाहेंगे
std::vector<char> buffer(1024);
ध्यान दें कि दूसरे उदाहरण के लिए (std::vector<>
का उपयोग करके), delete
ऑब्जेक्ट की कोई आवश्यकता नहीं है; जब यह गुंजाइश से बाहर हो जाता है तो इसकी याददाश्त स्वचालित रूप से मुक्त हो जाएगी। आपको C++ प्रोग्राम्स में new
और malloc
दोनों से बचने के लिए प्रयास करना चाहिए, बजाय ऑब्जेक्ट्स का उपयोग करना जो स्वचालित रूप से अपनी स्मृति का प्रबंधन करते हैं।
स्रोत
2010-04-29 21:38:55
ध्यान दें कि सी ++ में शून्य * से कोई अंतर्निहित कलाकार नहीं है, इसलिए मॉलोक मामले पर आपको वास्तव में 'नोड * नोड 1 = reinterpret_cast (malloc (sizeof (नोड)) करने की आवश्यकता है, जो स्पष्ट रूप से बहुत अधिक टाइपिंग है। :) (ठीक है, आप सी-स्टाइल कास्ट भी कर सकते हैं, लेकिन फिर आप सी ++ में कोडिंग क्यों कर रहे हैं? :)) –
सी से ++ को बहुत अधिक लागू न करने का प्रयास करें, वे अलग-अलग तरीकों से अलग-अलग भाषाओं के साथ अलग-अलग भाषाएं हैं। – GManNickG