我只是试图在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

10-08 04:14