चलो देखते हैं कि मैं दूसरों द्वारा प्रदान किए गए विभिन्न लिंक को उचित उत्तर में जोड़ सकता हूं या नहीं।
As far as the C language is concerned, there is no difference.
exit()
को एक कॉल करता है
- कॉल
atexit()
के साथ पंजीकृत कार्यों;
- फ्लश और आउटपुट स्ट्रीम को बंद करता है;
tmpfile()
के साथ खोले गए फ़ाइलों को हटा देता है;
- पर्यावरण पर नियंत्रण देता है।
ए return <n>
मुख्य से exit(<n>)
के बराबर है।
Some flawed static code analyzers think different.
जहां तक सी भाषा का संबंध है, स्मृति main()
द्वारा आवंटित और नहीं free()
घ है लीक। यूनिक्स प्रक्रिया समाप्ति पर साफ हो जाता है, लेकिन सभी ऑपरेटिंग सिस्टम (!) नहीं करते हैं।
जाहिर है, कुछ स्थिर कोड विश्लेषक स्मृति अभी भी exit()
के बिंदु पर आवंटित करने पर विचार लीक नहीं, यही वजह है कि है कि प्रतिबद्ध बनाया गया था (जबकि वे main()
से return
के लिए करते हैं) (से छुटकारा पाने के होने के लिए चेतावनी)।
यह कोड विश्लेषक में बग के लिए एक कामकाज है।
As far as the C++ language is concerned, there is a lot of difference.
जब आप return
main()
से, आप समारोह है, जो स्थानीय वस्तुओं नष्ट हो का मतलब है की गुंजाइश छोड़ रहे हैं।
चूंकि सी ++ प्रोग्रामर निर्धारक विनाश के लाभ का आनंद लेते हैं (उदाहरण के लिए जावा जैसे कि जो आपके विनाशक को वीएम समाप्ति पर भी निष्पादित कर सकता है या नहीं ...), वे अपने विनाशकों को केवल स्मृति मुक्त करने से अधिक करते हैं। ncurses
द्वारा लॉक किए गए नेटवर्क कनेक्शन, अस्थायी फ़ाइलें, टर्मिनल विंडो, उस तरह की भलाई, जो सी प्रोग्रामर को मैन्युअल रूप से देखभाल करना होगा या atexit()
का उपयोग करना होगा।
जब आप main()
से std::exit()
कहते हैं, कि समारोह सीधे क्रम को नियंत्रण अपने हाथ में बदल जाता है। main()
फ़ंक्शन कभी वापस नहीं लौटाता है, बिनाmain()
-लोकल ऑब्जेक्ट्स के विनाशकों को बुलाते हुए प्रक्रिया समाप्त हो जाती है।
इसके अलावा, जबकि std::exit()
फ्लश और सी आउटपुट स्ट्रीम बंद करने के लिए परिभाषित किया गया है, वहाँ सी ++ उत्पादन के लिए इस तरह के कोई प्रावधान नहीं स्ट्रीम है।
क्या आप कुछ और ठोस बना सकते हैं? एक प्रतिबद्धता की तरह, स्रोत फ़ाइलों की एक सूची, या कुछ? इस सवाल को और अधिक संदर्भ के बिना समझना बहुत मुश्किल है। – unwind
फ्रीबीएसडी '/ बिन/डीएफ' में 'मुख्य()' में हाल ही में वापसी के बजाय निकास() का उपयोग करें, लेकिन/bin/cat अभी भी' मुख्य() 'में 'वापसी' का उपयोग करें। – oxnz
@oxnz: शायद ऐसा कुछ हो सकता है? http://stackoverflow.com/a/5856935/214671 –