此代码中的细分错误(错误-1073741819)

时间:2019-03-08 19:52:53

标签: arrays memory malloc

当我通过Visual Studio运行代码时,我收到错误-1073741819,而当我使用在线c编译器时,我得到了:“分段错误(核心已转储)”。

首先,我收到“双重释放或损坏”错误,但随后我对代码进行了一些更改。我已经尝试发现错误已有一段时间了,但我无法。

要指定,arr是一个长度为2n的数组,并且仅包含1到n之间的数字。

这是有问题的代码:

 bool islegal(int arr[], int n)
{
 int *count = (int*)malloc(sizeof(int)*(n+1));
 for (int i = 0; i < 2*n; i++)
 {
    count[arr[i]]++;
    if (count[arr[i]] > 2)
    {
        free(count);
        return false;
    }
 }
 for (int i = 0; i < 2*n; i++)
 {
    if (count[arr[i]] == 2)
    {
        if (i+arr[i]<2*n && arr[i] != arr[i + arr[i]])
        {
            free(count);
            return false;
        }
    }
 }
 free(count);
 return true;
}

0 个答案:

没有答案