2011-10-30 11 views
7

कभी-कभी हम अपने सी प्रोग्रामिंग में इस प्रकार के कोड का उपयोग करते हैं।स्मृति में निरंतर स्ट्रिंग कहाँ संग्रहित की जाएगी?

char *p = "Sam"; 

यहां निरंतर वर्ण स्ट्रिंग "सैम" का पता चार सूचक पी में संग्रहीत किया जा रहा है। अब यहां
मैं पूछना चाहता हूं कि सैम कहां संग्रहीत किया जा रहा है?

+0

संभावित डुप्लिकेट [सी में निरंतर चर कहाँ हैं?] (http://stackoverflow.com/questions/1576489/where-are-constant-variables-stored-in-c) –

+0

@BrianRoach एक स्ट्रिंग अक्षर एक स्थिर चर नहीं है। –

उत्तर

9

मानक यह निर्दिष्ट नहीं करता है। आम तौर पर स्ट्रिंग शाब्दिक ("Sam") केवल पढ़ने के लिए पृष्ठ में डेटा अनुभाग में संग्रहीत किया जाएगा।

p के लिए, यह इस बात पर निर्भर करता है कि यह स्वचालित या स्थैतिक है या नहीं।

+0

जहां स्वचालित और वैश्विक संग्रहित हैं? –

+2

@ Mr.32 स्वचालित चर ढेर पर संग्रहीत हैं। "वैश्विक" या स्थिर चर 'डेटा' (या शायद' बीएसएस') में संग्रहीत हैं। – cnicutar

+1

किस वास्तुकला पर 'डेटा' अनुभाग में केवल-पढ़ने वाले पृष्ठ हैं? लिनक्स/ईएलएफ पर, स्ट्रिंग अक्षर को 'रोडटा' अनुभाग में अन्य पढ़ने-योग्य गैर-कोड डेटा के साथ संग्रहीत किया जाता है, जो 'टेक्स्ट' के समान खंड में होता है। –

8

स्ट्रिंग "सैम" को वैश्विक स्थिरांक के समान क्षेत्र में वैश्विक स्मृति में संग्रहीत किया जाएगा।

हालांकि, अगर आप ऐसा किया:

char p[] = "Sam"; 

तो यह स्टैक पर बजाय होगा। (एक सरणी प्रारंभकर्ता के रूप में)

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