के बिना एक चार सूचक लौटें पर विचार करें निम्नलिखित कोड:सी - malloc
char* pointerTesting(void) {
char* test = "hello";
return test;
}
int main() {
char* string = pointerTesting();
printf("string: %s\n", string);
}
यह कोई समस्या नहीं संकलन है और चल रहा है। हालांकि, मेरी समझ में, यह काम नहीं करना चाहिए, क्योंकि test
पॉइंटर आवंटित स्मृति स्टैक पर है और मुख्य पर लौटने पर यह नष्ट हो गया है।
तो सवाल यह है कि यह पॉइंटर टेस्टिंग() फ़ंक्शन में मॉलोक के बिना काम करने का प्रबंधन कैसे करता है?
http://stackoverflow.com/questions/2589949/c-string-literals-where-do-they-go और stackoverflow पर इस विषय पर समान प्रश्नों का एक समूह देखें। – jman
* पॉइंटर * स्टैक (सामान्य कार्यान्वयन के लिए) पर आवंटित किया गया है, लेकिन आप पॉइंटर वापस नहीं कर रहे हैं, केवल इसकी प्रतिलिपि अगर इसकी कीमत है। यह 'int n = 42 के समान है; वापसी एन; '। यह उस प्रासंगिकता के बारे में बताता है जो यह प्रासंगिक है। –