我正在尝试比较我基本上已经制作成字符串的两个指针。我不知道如何解决这个问题,但是当我运行它时,它会在strcmp中给出一个seg错误。
这是我的代码:
[0, 1, 2]
答案 0 :(得分:0)
崩溃很可能不是strcmp
次来电,而是因为您重新分配 temp2
,然后尝试free
新的指针。您对temp
执行相同操作。
如果这些新指针未分配malloc
(或calloc
本质上为malloc
加memset
),那么您将有未定义的行为这是崩溃的常见原因。关于temp
,它可以指向某个内存的中间,并尝试在该指针上调用free
(即使它指向分配有malloc
的块的中间)也是UB。
free
函数必须传递malloc
或NULL
返回的指针,没有别的。
答案 1 :(得分:0)
这是一个基本错误:
override.properties
如果temp=strstr(temp2, str);
if(strcmp(temp2, temp)==0){
找不到字符串,则strstr
将为NULL。将temp
传递给NULL
会导致未定义的行为,这可能是导致崩溃的原因。
在致电strcmp
之前,您需要先检查if ( temp == NULL )
并采取一些措施。