我的程序中出现了段错误,并试图通过gdb检测源。
gdb的O / p如下:
[Switching to Thread 0xb6dffb70 (LWP 6448)]
#0 0x00adc026 in __strlen_sse2_bsf () from /lib/libc.so/6
#1 0x08049e77 in sim_txn (fd=0x804c5c0) at rand_trace0.c:390
并在rand_trace0.c:390
我有一行
system_call_length = strlen("rename(")+strlen(filename1)+strlen(",")+strlen(filename)+strlen(")")+1;
一切似乎都在发挥作用。 我很茫然。
答案 0 :(得分:4)
filename1
和filename
是否都是指向以null结尾的字符串的有效指针?您可能会遇到段错误的最常见原因是您的指针未正确初始化或者其中一个字符串未以空值终止(可能是因为缓冲区溢出)而导致strlen()
试图读取已分配内存的大小。