मैं एक बड़े C ++ प्रोजेक्ट पर काम कर रहा हूं। इसमें एक सर्वर होता है जो REST API को उजागर करता है, जिसमें बहुत व्यापक प्रणाली के लिए एक सरल और उपयोगकर्ता के अनुकूल इंटरफेस प्रदान करता है जिसमें कई अन्य सर्वर शामिल होते हैं। कोडबेस काफी बड़ा और जटिल है, और एक उचित डिजाइन के बिना समय के माध्यम से विकसित हुआ है। मेरा कार्य नई सुविधाओं को लागू करना और पुराने कोड को ठीक करना / ठीक करना है ताकि इसे अधिक स्थिर और विश्वसनीय बनाया जा सके।
फिलहाल, सर्वर लंबे समय से रहने वाले वस्तुओं है कि समाप्त कभी नहीं कर रहे हैं और न ही जब निपटारा प्रक्रिया समाप्त की एक संख्या पैदा करता है। यह लीक का पता लगाने के लिए वैलग्राइंड को लगभग बेकार कर देता है, क्योंकि "खतरनाक" लोगों में से हजारों (संदिग्ध) वैध लीक के बीच अंतर करना असंभव है।
मेरा विचार यह सुनिश्चित करना है कि सभी वस्तुओं को समाप्ति से पहले निपटाया जाए, लेकिन जब मैंने यह प्रस्ताव रखा, तो मेरे सहयोगियों और मेरे बॉस ने मुझे यह बताते हुए विरोध किया कि ओएस वैसे भी उस स्मृति को मुक्त करने जा रहा है (जो हर किसी के लिए स्पष्ट है) और वस्तुओं का निपटान करना सर्वर के शटडाउन को धीमा कर देगा (जो, इस समय, मूल रूप से एक कॉल है std::exit
)। मैंने जवाब दिया कि "स्वच्छ" शटडाउन प्रक्रिया होने का मतलब यह नहीं है कि किसी को इसका उपयोग करना चाहिए। हम हमेशा फोन कर सकते हैं std::quick_exit
या सिर्फ kill -9
प्रक्रिया अगर हम अधीर लग रहा है।
उन्होंने जवाब दिया "अधिकांश लिनक्स डेमोंस और प्रक्रियाएं शटडाउन पर मेमोरी को मुक्त करने में परेशान नहीं करती हैं"। जबकि मैं यह देख सकता हूं कि यह भी सच है कि हमारी परियोजना को सटीक मेमोरी डिबगिंग की आवश्यकता है, क्योंकि मुझे पहले से ही स्मृति भ्रष्टाचार, डबल फ़्री और अनइंस्टॉल किए गए चर मिलते हैं।
आपके क्या विचार हैं? क्या मैं एक व्यर्थ प्रयास कर रहा हूं? यदि नहीं, तो मैं अपने सहयोगियों और अपने बॉस को कैसे मना सकता हूं? यदि हां, तो मुझे इसके बजाय क्यों और क्या करना चाहिए?