Форум программистов, компьютерный форум CyberForum.ru

HEAP CORRUPTION DETECTED - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.91
pillllot07
2 / 2 / 1
Регистрация: 02.12.2010
Сообщений: 13
27.02.2011, 17:17     HEAP CORRUPTION DETECTED #1
Собственно такую ошибку выдаёт: "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');
в аттаче скриншот ошибки
Миниатюры
HEAP CORRUPTION DETECTED  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 17:17     HEAP CORRUPTION DETECTED
Посмотрите здесь:

Heap corruption detected C++
C++ ошибка Heap corruption detected
C++ heap corruption detected
C++ Heap corruption detected
C++ Heap Corruption detected (
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pillllot07
2 / 2 / 1
Регистрация: 02.12.2010
Сообщений: 13
27.02.2011, 17:34  [ТС]     HEAP CORRUPTION DETECTED #2
Нашёл ошибку) Действительно вылез за массив) Но как же можно следить за памятью?)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.02.2011, 18:55     HEAP CORRUPTION DETECTED #3
pillllot07, Использовать std::vector, std::string, std::list (вообщем контейнеры).
Или написать свою обертку под массив с проверкой выхода за пределы
pillllot07
2 / 2 / 1
Регистрация: 02.12.2010
Сообщений: 13
27.02.2011, 19:33  [ТС]     HEAP CORRUPTION DETECTED #4
Спасибо)
Yandex
Объявления
27.02.2011, 19:33     HEAP CORRUPTION DETECTED
Ответ Создать тему
Опции темы

Текущее время: 00:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru