Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 18:26   #1
Mizz13
Новичок
Джуниор
 
Регистрация: 07.06.2011
Сообщений: 1
По умолчанию Непонятно причем Access Violation

Программа вылетает с ошибкой "Access violation at adress xxxxxxxx. Read if address yyyyyyyy."
Причем вылетает не всегда. В программе используеться матрица, и в зависимости от того как заполнена матрица выскакивает ошибка. Т.е. матрица может любая или 5х5 или 10х10 и т.д. Нашел в где именно в коде она выскакивает.
Код:
struct T_cell
{
    int i_;
    int j_;
    T_cell(int i, int j) : i_(i), j_(j)
    {}

    bool operator==(const T_cell& c)
    {
        return i_ == c.i_ && j_ == c.j_; //на этой строке выбивает ошибку (точнее наа нее кидает после нажатия OK)
    }

    bool operator!=(T_cell c)
    {
        return !(*this == c);
    }
};
В этот блок программа переходит из
Код:
void print_path(T_path_stack  path_stack)
{
    std::cout << "Проход в лабиринте:" << std::endl;
    for(;;)
    {
        T_cell  prev_cell = path_stack.top().prev_cell_;
        std::cout << path_stack.top().cur_cell_ << std::endl;
        if(path_stack.size() == 1)
        {
            std::cout << path_stack.top().prev_cell_ << std::endl;
            return;
        }
        while(path_stack.top().cur_cell_ != prev_cell)
        {
            path_stack.pop(); //отсюда
        }
    }
}
Если необходимо могу предоставить весь код. Помогите. Читал, что ошибка возникает при неправильном выделении памяти, но где именно я ошибся непонятно.
Mizz13 вне форума Ответить с цитированием
Старый 04.05.2012, 10:04   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:
while(path_stack.top().cur_cell_ != prev_cell)
        {
            path_stack.pop(); //отсюда
        }
Когда все элементы будут извлечены, с чем будем сравнивать prev_cell?
Надо бы проверочку добавить. На empty.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access violation ho_N Компьютерное железо 2 30.11.2011 08:36
сlass и Access violation profor Общие вопросы C/C++ 2 05.04.2010 15:21
Access violation at address... Ralf_ru Помощь студентам 13 05.04.2009 05:20
Access Violation SunKnight Общие вопросы Delphi 2 05.06.2008 16:46
Access Violation Carbon Общие вопросы Delphi 12 18.09.2007 19:55