我只是试图在C中连接两个字符串,我不知道为什么,但我得到了segfault错误。我使用gdb追踪到下面代码行的第一行。
strcat(tempString, "uptime");
pFile = fopen (tempString,"r");
tempString是=“/proc/”。我只想将字符串“UpTiming”追加到TestString,然后尝试打开文件,如果它存在于/PRC文件夹中。当strcat()调用memcpy()时,是实际segfault发生时。
最佳答案
在这些行之前没有显示一些代码,但很可能tempString是使用
tempString = "/proc/";
这使得它是一个常量(具有常量mem大小分配)
第二行
strcat
将尝试覆盖字符串常量,它将缓冲区之外的6个字节放入未知区域(如果成功)。负责任地使用strcat:http://beej.us/guide/bgc/output/html/multipage/strcat.html
*正如JeremyP指出的,如果它指向文本段,则它是只读的,并将导致segfault