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

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

Восстановить пароль Регистрация
 
lNORDl
1 / 1 / 0
Регистрация: 23.02.2014
Сообщений: 44
24.03.2014, 22:38     Ошибка при получении vector.size() #1
Здравствуйте!
Работал-работал и тут не с того не с сего начала вываливаться ошибка:
First-chance exception at 0x00A9AAA9 in Project_alpha_1.0.exe: 0xC0000005: Access violation reading location 0x00000020.
Ошибка возникает когда я вызываю функцию у вектора size(), появляться стала абсолютно непонятно из-за чего, так как все что связано с обработкой этого массива я не трогал, может знает кто, что за хрень?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 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
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 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
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
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
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
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++ Ошибка при использовании vector в заголовке функции
C++ Ошибка при использовании vector<bool>
C++ Вызов size контейнера vector при его передаче в функцию по ссылке

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

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

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