Re: g++
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 debian-russian-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Reply to:
- Follow-Ups:
- Re[2]: g++
- From: Andrew Saunders <dasdeine@pisem.net>
- References:
- Re: g++
- From: alexander saltanov <asdgray@penza.net>