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

Исключение при вызове iterator destruction - C++

Восстановить пароль Регистрация
 
OzArt
Сообщений: n/a
09.05.2012, 12:17     Исключение при вызове iterator destruction #1
Здравствуйте.
Помогите пожалуйста. Вот фрагмент кода:
try {
if(!m_vDataItems.empty()) {
int nItemsCount = m_vDataItems.size();
for(int i=0; i < nItemsCount; i++) {

_variant_t vtValues[10];
vtValues[0] = (long)m_vDataItems[i].nID;
vtValues[1] = (long)m_vDataItems[i].nParentID;
vtValues[2] = m_vDataItems[i].szItemName.c_str();
vtValues[3] = (long)m_vDataItems[i].nSequence;
vtValues[4] = m_vDataItems[i].bVector;
vtValues[5] = (long)m_vDataItems[i].nVectorNumElements;
vtValues[6] = m_vDataItems[i].bUseConvertion;
vtValues[7] = m_vDataItems[i].szDescription.c_str();
vtValues[8] = (long)m_vDataItems[i].nLocationType;
vtValues[9] = (long)m_vDataItems[i].nStartingAddress;

saValues.CreateOneDim(VT_VARIANT, 10, vtValues, 0);

m_pRecordset->AddNew( saFields, saValues);
m_pRecordset->Update();

saValues.Destroy();
}
}
}
В процессе отладки:
455: saValues.Destroy();
00406BAA lea ecx,[ebp-44h]
00406BAD call COleSafeArray:estroy (004019c4)
456: }
00406BB2 mov byte ptr [ebp-4],3
00406BB6 push offset @ILT+645(_variant_t::~_variant_t) (0040128a)
00406BBB push 0Ah
00406BBD push 10h
00406BBF lea ecx,[vtValues]
00406BC5 push ecx
00406BC6 call `eh vector destructor iterator' (0040ed50)
00406BCB jmp CDriverConf::AddDataItems+179h (004068b9)
457: }
на вызове call `eh vector destructor iterator' (0040ed50), попадаю в эту функцию и там в процессе циклического перебора итераторов на индексе 2 (именно на нем), вылетаю по исключению:
HEAP[DriverConfig.exe]: Invalid Address specified to RtlSizeHeap( 00140000, 00167148 )
Ни чего на ум не приходит... Если возникают не действительные итераторы,то кто в таком случае их "выносит"? Подскажите, пожалуйста, может я уже не замечаю очевидных вещей?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2012, 12:17     Исключение при вызове iterator destruction
Посмотрите здесь:

std::sort(iterator, iterator, method) подскажите как исправить C++
C++ Проблемы при вызове деструктора
C++ ошибка при вызове деструктора!
C++ Ошибка при запуске программы "vector iterator not incrementable"
C++ При обращении к структуре из класса возникает исключение:нарушение прав доступа при записи. Почему?
Ошибка при вызове метода класса, при чтении из файла C++
C++ Класс - Ошибки при вызове методов: В вызове функции отсутствует список аргументов
C++ При вызове функции необработанное исключение, выход за границы массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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