尝试修改字符串时出现分段错误
答
标准不允许修改字符串文字。该字符串存储在程序的只读段中,例如在linux中,它存储在可执行文件的.rodata
部分,该部分无法写入。
答
您不能修改字符串文字的内容。如果你希望能够这样做,把它放在字符数组中。
char str[] = "HELLO";
str[0] = str[2];
答
你得到一个赛格故障,因为编译器已经把字符串常量“HELLO”到只读存储器 - 并试图修改这样的字符串失败。
答
这被编译为只读部分的字符串文字。
.section .rodata
.LC0:
.string "HELLO"
这是谁upvoting?不是一个坏问题,但stackexchange将达到它将检测到这个问题,并能够指出用户在c-faq。 – cnicutar 2011-05-27 08:11:51