On Tue, 23 Apr 2002, alexander saltanov wrote:
> AS> cout << "\t" << *p << endl;
> AS> paths.push_back(p, "2");
> AS> ^^^^^^^^^^^^^^^^^^^^^^^^
>
> должно быть так: paths.push_back("2");
> но всё равно, на потате происходит segfault.
На RH72 - тоже (там gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)).
Попробовал заменить vector<string> на vector<int>
Падает на 16383-ем элементе.
Так и должно происходить - элемент добавляется в вектор, по которому идет
итерация, и в конце концов realloc(), вызываемый из ф-ий шаблона класса
vector, возвращает адрес отличный от прежнего начала вектора - и посему
указатель выходит за пределы выделенной памяти и получаем SIGSEGV.
Если хочется добавляеть эл-ты в контейнер в процессе итерации по нему, надо
использовать list, а не vector или deque.
Best regards,
-Vlad
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]