C 检测到gdb-SIGSEGV,但无法确定哪个功能和哪一行
C 检测到gdb-SIGSEGV,但无法确定哪个功能和哪一行,c,gdb,segmentation-fault,C,Gdb,Segmentation Fault,请检查一下主管道。我将字符串赋值为char*s3=“0,9,8,7,6,5,4,3,2,1”并且在运行时将有一个SIGSEGV。当我去注释这行时,就没有SIGSEGV了。那么为什么这个字符串赋值会导致SIGSEGV呢?很可能是修改了一个字符串文本,导致了未定义的行为(UB) s3指向存储在只读实现定义内存中的字符串文字,任何修改该字符串文字的尝试都会导致未定义的行为。事实上,你很幸运,你的代码崩溃了,因为UB不一定要求崩溃,但它可以给你奇怪的或字面上的任何结果
请检查一下主管道。我将字符串赋值为
char*s3=“0,9,8,7,6,5,4,3,2,1”代码>并且在运行时将有一个SIGSEGV。当我去注释这行时,就没有SIGSEGV了。那么为什么这个字符串赋值会导致SIGSEGV呢?很可能是修改了一个字符串文本,导致了未定义的行为(UB)
s3
指向存储在只读实现定义内存中的字符串文字,任何修改该字符串文字的尝试都会导致未定义的行为。事实上,你很幸运,你的代码崩溃了,因为UB不一定要求崩溃,但它可以给你奇怪的或字面上的任何结果