Я столкнулся с довольно странным исключением при запуске кода C++ в моем приложении Objective-C. Я использую libxml2 для чтения файла XSD. Затем я сохраняю соответствующие теги как экземпляры класса Tag в std::list. Затем я копирую этот список в std::vector, используя итератор в списке. Однако время от времени некоторые элементы списка не копируются в вектор. Любая помощь будет принята с благодарностью.
printf("\n length list = %lu, length vector = %lu\n",XSDFile::tagsList.size(), XSDFile::tags.size() );
std::list<Tag>::iterator it = XSDFile::tagsList.begin();
//result: length list = 94, length vector = 0
/*
for(;it!=XSDFile::tagsList.end();++it)
{
XSDFile::tags.push_back(*it); //BAD_ACCESS code 1 . . very bizarre . . . . 25
}
*/
std::copy (XSDFile::tagsList.begin(), XSDFile::tagsList.end(), std::back_inserter (XSDFile::tags));
printf("\n Num tags in vector = %lu\n", XSDFile::tags.size());
if (XSDFile::tagsList.size() != XSDFile::tags.size())
{
printf("\n length list = %lu, length vector = %lu\n",XSDFile::tagsList.size(), XSDFile::tags.size() );
//result: length list = 94, length vector = 83
}
std::copy (XSDFile::tagsList.begin(), XSDFile::tagsList.end(), std::back_inserter (XSDFile::tags));
? - person John Dibling   schedule 31.10.2013XSDFile::tags
пусто перед запуском этого кода? - person trojanfoe   schedule 31.10.2013valgrind
- person Dave S   schedule 31.10.2013Tag
с любым из этих двух контейнеров? Я спрашиваю, потому что кажется, что эти контейнеры являются статическими членами, так что это возможно. - person Dave S   schedule 31.10.2013