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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
#1

Ошибка при получении vector.size() - C++

24.03.2014, 22:38. Просмотров 511. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Работал-работал и тут не с того не с сего начала вываливаться ошибка:
First-chance exception at 0x00A9AAA9 in Project_alpha_1.0.exe: 0xC0000005: Access violation reading location 0x00000020.
Ошибка возникает когда я вызываю функцию у вектора size(), появляться стала абсолютно непонятно из-за чего, так как все что связано с обработкой этого массива я не трогал, может знает кто, что за хрень?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.03.2014, 22:42     Ошибка при получении vector.size() #2
Код нужен.
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
24.03.2014, 22:47  [ТС]     Ошибка при получении vector.size() #3
Код чего? Вызова функции size()? )))
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12537 / 7099 / 797
Регистрация: 27.09.2012
Сообщений: 17,521
Записей в блоге: 2
Завершенные тесты: 1
24.03.2014, 22:49     Ошибка при получении vector.size() #4
Цитата Сообщение от lNORDl Посмотреть сообщение
Код чего?
домофона!
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
24.03.2014, 22:51  [ТС]     Ошибка при получении vector.size() #5
Сорь, но я просто щас дико зол только 3 часа кодинга принесли плоды, уже готов гордо закрыть IDE и тут....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int Universe::indexInObjects(BasicObject* object)
{
    int n = -1;
    int l = _objects.size();
    for (int i = 0; i < l; i++)
    {
        if (_objects.at(i) == object)
        {
            n = i;
            break;
        }
    }
 
    return n;
}
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
24.03.2014, 22:51     Ошибка при получении vector.size() #6
Цитата Сообщение от lNORDl Посмотреть сообщение
может знает кто, что за хрень?
Расстрел памяти.
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
24.03.2014, 22:52  [ТС]     Ошибка при получении vector.size() #7
Но тут ошибки быть не может не чего не трогал с момента написания 1 раз.

Добавлено через 28 секунд
Что за расстрел?
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
24.03.2014, 22:58     Ошибка при получении vector.size() #8
lNORDl, запись в память объекта(ов) несанкционированным способом. Например, простейший случай, запись за границей массива. Если память, в которую пишем, принадлежит другому объекту, то его поведение после этого может быть непредсказуемо. Отсюда твое непонятное поведение в рабочем коде. Где-то в другом месте программы произошел расстрел, теперь содержимое внутренних данных вектора неконсистентно. Для того, чтобы это отловить нужен весь код.
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
24.03.2014, 23:22  [ТС]     Ошибка при получении vector.size() #9
хм, а можно блиц вопрос возможно из-за этого:
Класс Б унаследован от А, при вызове delete Б вызывается функция ~Б(), из этой фунции надо вызывать A::~A()?

Добавлено через 14 минут
Все, проблему решил, по крайней мере надеюсь)) из деструкторов убрал вызов деструктора родителя, получается что функция удаления объекта из массива вызывалась как-бы 2 раза причем второй раз сам объект уже был delete, вообщем действительно наверное там память вывернуло, обнаружил при пошаговой отладке.
Всем Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 23:24     Ошибка при получении vector.size()
Еще ссылки по теме:

C++ Вызов size контейнера vector при его передаче в функцию по ссылке
Ошибка исполнения при записи в vector C++
Vector size - выражение должно иметь тип указателя C++
C++ Ошибка “vector<bool> erase iterator outside range” при работе алгоритма Хаффмана
C++ Ошибка при использовании erase для std::vector

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

Или воспользуйтесь поиском по форуму:
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
24.03.2014, 23:24     Ошибка при получении vector.size() #10
Цитата Сообщение от lNORDl Посмотреть сообщение
Класс Б унаследован от А, при вызове delete Б вызывается функция ~Б(), из этой фунции надо вызывать A::~A()?
Вручную? Не надо Вижу что ты и сам это понял, но я подтверждаю.
Yandex
Объявления
24.03.2014, 23:24     Ошибка при получении vector.size()
Ответ Создать тему
Опции темы

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