मैं कई खेलों से अवगत हूं जो C ++ में लिखे गए हैं लेकिन अपवादों का उपयोग नहीं करते हैं। चूंकि C ++ में मेमोरी एलोकेशन फेलियर को आमतौर पर std::bad_alloc
अपवाद के आसपास बनाया गया है, ऐसे गेम इस तरह की विफलता को कैसे संभालते हैं?
क्या वे बस दुर्घटना करते हैं, या एक आउट-ऑफ-मेमोरी त्रुटि से निपटने और पुनर्प्राप्त करने का एक और तरीका है?
std::terminate
, और यह होना चाहिए । लेकिन फिर एक ही प्रतिबंध के तहत, आवंटन अपवाद को फेंकने के बजाय एक अशक्त सूचक लौटा सकता है, और उस परिणाम को अलग से जांचा और नियंत्रित किया जा सकता है।
ClassName variableName = new(nothrow) ClassName();
( स्पष्ट रूप से वर्ग का नाम, चर नाम, आदि की जगह ) फिर, यदि आवंटन विफल रहता है, तो आप यह कहकर इसका पता लगा सकते हैं if(!variableName)
कि त्रुटि को बिना किसी प्रयास के अपवाद ब्लॉक को संभालने की अनुमति देता है। इसी तरह, यदि मेमोरी को किसी फंक्शन जैसे malloc()
, calloc()
इत्यादि का उपयोग करके आवंटित किया जाता है , तो if(!variableName)
कोशिश करने के लिए एक ही विधि का उपयोग किए बिना एक ही विधि का उपयोग करके आवंटित करने में विफलताओं का पता लगाया जा सकता है । जैसे ही गेम इन त्रुटियों को कैसे संभालता है, ठीक है, उस बिंदु पर, यह गेम devs पर निर्भर करता है कि वह क्रैश करता है या नहीं।