Strcmp使用两个指针导致分段错误

时间:2015-10-17 03:18:44

标签: c pointers segmentation-fault strcmp

我正在尝试比较我基本上已经制作成字符串的两个指针。我不知道如何解决这个问题,但是当我运行它时,它会在strcmp中给出一个seg错误。

这是我的代码:

[0, 1, 2]

2 个答案:

答案 0 :(得分:0)

崩溃很可能不是strcmp次来电,而是因为您重新分配 temp2,然后尝试free新的指针。您对temp执行相同操作。

如果这些新指针未分配malloc(或calloc本质上为mallocmemset),那么您将有未定义的行为这是崩溃的常见原因。关于temp,它可以指向某个内存的中间,并尝试在该指针上调用free(即使它指向分配有malloc的块的中间)也是UB。

free函数必须传递mallocNULL返回的指针,没有别的。

答案 1 :(得分:0)

这是一个基本错误:

override.properties

如果temp=strstr(temp2, str); if(strcmp(temp2, temp)==0){ 找不到字符串,则strstr将为NULL。将temp传递给NULL会导致未定义的行为,这可能是导致崩溃的原因。

在致电strcmp之前,您需要先检查if ( temp == NULL )并采取一些措施。