0 / 1 / 0
Регистрация: 31.10.2018
Сообщений: 113
1

HEAP CORRUPTION DETECTED

15.10.2019, 23:35. Показов 938. Ответов 3

Author24 — интернет-сервис помощи студентам
Не могу понять, почему выдает такую ошибку, когда я освобождаю память: "HEAP CORRUPTION DETECTED: after Normal block". Я вроде нигде не вылазил за пределы массива... Вот код:
C++
1
2
3
4
5
6
void deleteJacobi(double ** Jacobi, int n)
{
    for (int i = 0; i < n; ++i)
        delete[] Jacobi[i];//на 1ой же итерации выдает ошибку
    delete[] Jacobi;
}
C++
1
2
3
4
5
6
7
double ** createJacobi(double ** Jacobi, int n)
{
    Jacobi = new double * [n];
    for (int i = 0; i < n; ++i)
        Jacobi[i] = new double[n];
    return Jacobi;
}
Вот как я создаю матрицу:
C++
1
2
double ** Jacobi = 0;
        Jacobi = createJacobi(Jacobi, n);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2019, 23:35
Ответы с готовыми решениями:

Heap corruption detected
Возникает эта ошибка при выполнении функции Strings::Append (строка 81, в меню это пункт 3)....

Heap corruption detected
Ошибка возникает после отработки программы Заголовочный файл: #pragma once #include&lt;iostream&gt;...

heap corruption detected
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0;...

HEAP CORRUPTION DETECTED
Собственно такую ошибку выдаёт: &quot;HEAP CORRUPTION DETECTED: after Normal block (#220) at 0x001970B8....

3
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,353
16.10.2019, 00:04 2
да вроде ничего не вылетает. Кстати, чуток подправил createJacobi
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void deleteJacobi(double ** Jacobi, int n)
{
    for (int i = 0; i < n; ++i)
    {
        delete[] Jacobi[i];
    }
    delete[] Jacobi;
}
 
double ** createJacobi( int n)
{
    double ** Jacobi = new double* [n];
    for (int i = 0; i < n; ++i)
    {
        Jacobi[i] = new double[n];
    }
    return Jacobi;
}
 
void main()
{
    int n=4;
    double ** Jacobi = createJacobi( n);
    deleteJacobi(Jacobi, n);
    Jacobi=0;
}
проследи, какие параметры передаёшь в deleteJacobi, может, указатель испорченный

А вот полноценная замена всей этой лапши. Об "удалении" думать не нужно

C++
1
2
3
4
5
6
7
    using td_line=std::vector<double>;
    using td_matrix=std::vector<td_line>;
 
    size_t N=4;
 
    //объявление матрицы N*N
    td_matrix matrix(N,td_line(N,0.0));
1
0 / 1 / 0
Регистрация: 31.10.2018
Сообщений: 113
16.10.2019, 00:30  [ТС] 3
Как я понял, она у меня вылетала, из-за того, что я записывал значения в Jacobi, выходя за пределы массива.
0
фрилансер
5503 / 5098 / 1048
Регистрация: 11.10.2019
Сообщений: 13,353
16.10.2019, 00:37 4
TimaGera31, а, ну это тоже запросто. За границами массивов всегда нужно следить
0
16.10.2019, 00:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2019, 00:37
Помогаю со студенческими работами здесь

Heap corruption detected
Добрый день! Проблема вот в чём: когда выполнение кода доходит до 163 строки, появляется ошибка: &quot;...

Heap Corruption detected (
что не правильно? запускаю и ошибка вылетает как на предидущей картинке template&lt;typename TT&gt;...

Heap corruption detected
Heap corruption на строке 93 при первом же выполнении цикла. Из-за чего? #include &lt;locale.h&gt; //...

Heap corruption detected
При попытке очистить память выдает &quot;Heap corruption detected&quot;. Помогите пожалуйста( //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru