तो मैं निम्नलिखित कार्यक्रम है:विभाजन दोष लिनक्स
int main(){
char* one = "computer";
char two[] = "another";
two[1]='b';
one[1]='b';
return 0;
}
यह लाइन "एक [1] = 'बी'" जो समझ में आता है पर segfaults क्योंकि स्मृति कि सूचक "एक" अंक केवल स्मृति में पढ़ने के लिए होना चाहिए। हालांकि, सवाल यह है कि रेखा "दो [1] = 'बी'" segfault क्यों नहीं है? जीसीसी से असेंबली आउटपुट को देखते हुए:
.file "one.c"
.section .rodata
.LC0:
.string "computer"
.LC1:
.string "another"
.text
.globl main
.type main, @function
main:
हम देखते हैं कि दोनों तार रॉडटा सेक्शन में हैं इसलिए वे केवल पढ़ रहे हैं। तो फिर लाइन कैसे आती है "दो [1] = 'बी' segfault नहीं है?
भी देखें अलग लेकिन संबंधित सवाल http://stackoverflow.com/questions/
आप चर के साथ एक चरित्र सरणी को प्रारंभ कर सकते हैं, इस तरह के:
यह के बराबर है 1770062/परिभाषित-पॉइंटर-टू-स्टेटिक-स्ट्रिंग/1770067 # 1770067 –