6

क्या पर्ल दुभाषिया (उर्फ "पर्ल") के लिए स्मृति के बाहर होने पर व्यवहार करने के लिए एक मानक (आईएसएच) तरीका है? क्या यह किसी भी तरह से दस्तावेज/specced बाहर है? कुछ समान तरीके से कोडित?क्या स्मृति के बाहर होने पर पर्ल व्यवहार करने का कोई मानक तरीका है?

मुझे विशेष रूप से किसी भी मानकों में दिलचस्पी है जो पर्ल कोड चलाने के लिए अनुबंध के रूप में व्यक्त की जाती है - उदाहरण के लिए, die कहा जाएगा? END ब्लॉक निष्पादित किया जाएगा? आदि ...

मैं दोनों "सैद्धांतिक" उत्तर (उदाहरण के लिए जेनेरिक "के साथ ठीक हूं, यह है कि लैरी/पी 5 पी से मिशन स्टेटमेंट दस्तावेज़" ऑफ-मेमोरी पर सामान्य रूप से क्या करना चाहिए "/आदि ..., भले ही 100% malloc() कॉल इस नियम का पालन न करें); या एक "व्यावहारिक" कथन (उदाहरण के लिए पर्ल में सभी malloc() कॉल एक सामान्य "allocate_memory" फ़ंक्शन में लिपटे हैं जो समान रूप से सभी विफलताओं को संभालती है)।

यह संभव हो सकता है कि उत्तर विशेष रूप से स्मृति से बाहर निकलने पर निर्भर करता है (उदाहरण के लिए आंतरिक पर्ल कोड द्वारा आवंटित पर्ल कोड की डेटा संरचना बनाम स्मृति के लिए अधिक स्मृति के लिए अनुरोध "अधिक डेटा स्टोर करने की आवश्यकता" स्पष्ट से संबंधित नहीं है पर्ल कार्यक्रम में)।

यदि उत्तर अत्यंत कार्यान्वयन निर्भर है, तो सोलारिस/लिनक्स के लिए पर्ल मानें, और किसी भी हालिया स्थिर संस्करण (5.8 से 5.16) तक सीमित करना स्वीकार्य है।

प्रश्न मानक पर्ल दुभाषिया तक सीमित है, हालांकि आप इसे परिभाषित करना चाहते हैं कि पूर्व-संकलन कॉन्फ़िगरेशन (उदाहरण के लिए एक प्रमुख लिनक्स वितरण के साथ आता है, या अकेले छोड़े गए सभी डिफ़ॉल्टों के साथ संकलित एक ...)।

नोट: यह सवाल another Q

उत्तर

6

manual page for the various diagnostic warnings पर एक नज़र है कि पर्ल जारी करेगा जब "उपयोग निदान" pragma सक्षम किया गया है, तो आप "बाहर के विभिन्न विभिन्न प्रकार देख सकते हैं ले रहा है करने के लिए गाइल्स की टिप्पणी से बाहर आया स्मृति की "त्रुटियों और उनका क्या मतलब है।

तो आप इन संदेशों से "मानक" व्यवहार का अनुमान लगा सकते हैं; ("! स्मृति समाप्त"): "। एक बहुत ही गंभीर त्रुटि (nontrappable)"

Out of memory! 
(X) The malloc() function returned 0, indicating there was 
insufficient remaining memory (or virtual memory) to satisfy the 
request. Perl has no option but to exit immediately. 

एक "एक्स" के स्तर त्रुटि के रूप में चिह्नित किया गया है विस्मयादिबोधक बिंदु के साथ एक के बाद एक आप के बारे में पूछ रहे हैं की तरह लगता है

हालांकि यदि यह "बड़ा अनुरोध" (64K से अधिक के लिए) है तो यह पता लगाने योग्य है (मुझे लगता है कि पर्ल मानता है कि इसमें साफ-सफाई बंद करने के लिए पर्याप्त स्मृति होगी)।

संबंधित मुद्दे

 संबंधित मुद्दे