приложение записывало в память перед запуском буфера кучи при удалении массива bool - PullRequest
0 голосов
/ 08 июля 2019

Когда я пытаюсь использовать delete [] в динамически размещаемом отладчике массива bool выдает ошибку.

Это происходит только при удалении этого конкретного массива, после того, как я комментирую этот фрагмент кода, все в порядке.

    for (int i = 0; i < tests; i++)
    {
        int *map=new int[n_of_cit[i]];
        bool *check = new bool[n_of_cit[i]];
            /// this is the array i have problem with
        int curr;
        for (int k = 0; k < n_of_cit[i]; k++)
        {
            map[k] = infinity;
            check[k] = 0;
        }
        map[start[i]-1]=0;
        while (true)
        {
            if (map[destination[i]-1]!=infinity)
            {
                answers[i] = map[curr - 1];
                break;
            }
            for (int j = 0; j < n_of_cit[i]; j++)
            {
                if (map[j] != infinity && check[j] == false)
                {
                    curr = j;
                }
            }
            for (int j = curr; j < n_of_cit[i]; j++)
            {
                if (check[j] == 0 && map[j] < map[curr]) curr = j;
            }


            for (int k = 0; k < n_of_high[i]; k++)
            {
                if (from[i][k]-1 == curr)
                {
                    if (map[curr]+cost[i][k] < map[to[i][k] - 1])
                    {
                        map[to[i][k] - 1] = map[curr]+cost[i][k];
                    }
                }
                else if (map[curr-1] + to[i][k] == curr)
                {
                    if (cost[i][k] < map[from[i][k] - 1])
                    {
                        map[from[i][k] - 1] = map[curr] + cost[i][k];
                    }
                }

            }
            check[curr - 1] = 1;
        }

        delete [] map;
        delete [] check;
            ///thats where error shows
    }

Ошибка: «ОБНАРУЖЕНА КОРРУПЦИЯ КАРТЫ: перед нормальным блоком (# 231) в 0x000F9A58. CRT обнаружил, что приложение записало в память до запуска буфера кучи». (визуальная студия 2017) Я ищу возможность удаления этого массива, возможно, что я получаю неверный фрагмент памяти, но не знаю, где это может быть.

...