Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/62: Рейтинг темы: голосов - 62, средняя оценка - 4.69
pillllot07
2 / 2 / 0
Регистрация: 02.12.2010
Сообщений: 13
1

HEAP CORRUPTION DETECTED

27.02.2011, 17:17. Просмотров 12256. Ответов 4
Метки нет (Все метки)

Собственно такую ошибку выдаёт: "HEAP CORRUPTION DETECTED: after Normal block (#220) at 0x001970B8.
CRT detected that the application wrote to memory before start of heap buffer" хотя вроде массивы созданные мной в памяти я удаляю по окончании цикла (во всяком случае я так думаю И программа после запуска один раз проделывает всё о чём прошу, а второй раз уже отказывается. Вот кусок кода с этим циклом. Вопрос собственно: почему??? И как можно следить за памятью в Visual Studio 2010? Спасибо))
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
ptr = new int [20];// выделяем в динамической памяти место под наш массив и передаём адрес указателю без амперсанта т.к. массив и представляет собой адрес первого элемента
        ptrRed = new int [20]; //массив для остатков
        t=false;
        R=1;
        cout<<"\nGive me two numbers and I'll get you gsd(NOD)"<<endl; cout<< "(first number should be bigger the second one): \n";
        cin>>a>>b;
        t1=a; t2=b;
        cout<<endl;
        if(a>b)
        {
            
            while(R!=0)
            {
                
                r=R; // остаток передаём переменной r на тот случай если остаток R в следующем цикле будет равен 0, а нам надо будет вывести последний ненулевой остаток
                R=a%b; // новый остаток записываем переменную R
                quotient = a/b; // частное без остатка
                if(R!=0)
                {
                a=b;
                b=R;
                cout<<setw(15)<<"Redundance "<<count++<<" :"<<setw(8)<<a<<" "<<setw(15)<<"Quotient is: "<<setw(8)<<quotient<<endl;
                ptrRed[count-2]=R; //загоняем остаток с предидущего раза
                ptr[count-2]=quotient;//загоняем в массив частное
                }
                else
                {
                    cout<<b<<" is NOD";
                    t = true;
                }
            }
            
        }
        if(t!=true)
        cout<<r<<" is NOD";
        cout<<endl;
        for(int j=2; j<count-1;j++)
        {
        cout<<ptrRed[count-j]<<"="<<ptrRed[count-(j+2)]<<"-"<<ptrRed[count-(j+1)]<<"*"<<ptr[count-j]<<endl;
        //cout<<ptrRed[count-3]<<"="<<ptrRed[count-5]<<"-"<<ptrRed[count-4]<<"*"<<ptr[count-3]<<endl;
        }
        cout<<endl;
        Mult(ptr,ptrRed);
        delete []ptr;
        delete []ptrRed;
        count = 0;
        cout<<"Do you want more? (y/n): ";
        dir=getche();
        cout<<endl;
        
        
    }while(dir != 'n');
в аттаче скриншот ошибки
0
Миниатюры
HEAP CORRUPTION DETECTED  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 17:17
Ответы с готовыми решениями:

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

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

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

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

Heap Corruption Detected
Выдает ошибку HEAP CORRUPTION DETECTED, судя по всему где то ошиблась с распределением памяти...

4
pillllot07
2 / 2 / 0
Регистрация: 02.12.2010
Сообщений: 13
27.02.2011, 17:34  [ТС] 2
Нашёл ошибку) Действительно вылез за массив) Но как же можно следить за памятью?)
0
ForEveR
В астрале
Эксперт С++
8004 / 4761 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
27.02.2011, 18:55 3
pillllot07, Использовать std::vector, std::string, std::list (вообщем контейнеры).
Или написать свою обертку под массив с проверкой выхода за пределы
1
pillllot07
2 / 2 / 0
Регистрация: 02.12.2010
Сообщений: 13
27.02.2011, 19:33  [ТС] 4
Спасибо)
0
Vlados_Bro
0 / 0 / 0
Регистрация: 19.10.2017
Сообщений: 37
02.10.2018, 09:55 5
Спасибо, аналогичная ошибка была)
0
02.10.2018, 09:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2018, 09:55

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru