अज्ञात सरणी के लिए स्मृति पते स्वाभाविक रूप से perl द्वारा पुन: उपयोग किए जाते हैं। इस उदाहरण से पता चलता है, वे खाली सरणियों के लिए दो पते के बीच चक्र के रूप में:पर्ल इस पैटर्न के बाद स्मृति को फिर से आवंटित क्यों करता है?
$ perl -E "say [] for (1..6)"
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
मैं क्यों यह स्मृति तुरंत पुनः आवंटित नहीं कर सकता है पर कुछ सिद्धांतों के साथ आया था, जब मैंने पाया कि चक्र हमेशा दो पते है लंबा। निम्नलिखित उदाहरण 'चक्र 3 और 4.
$ perl -E "say [0] for (1..6)"
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
$ perl -E "say [0,0] for (1..6)"
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
ARRAY(0x64b2ac)
ARRAY(0x64b28c)
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
स्मृति प्रबंधन की इस विशिष्टता का क्या कारण बनता है?
आपको परवाह क्यों है? –
@ जोनाथन, मैं मॉड्यूल कैलकुलेशन लागू कर रहा हूं;) जिज्ञासा। – Tim
आपको 'perldoc perlguts' पढ़ना चाहिए और पर्ल पोर्टर्स की मेलिंग सूची में शामिल होना चाहिए http://lists.perl.org/list/perl5-porters.html – shawnhcorey