Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Программирование под Unix/Linux > strtok и new |
Автор: День 28.11.2005, 09:11 | ||
привет всем. Есть такой код
дочерний процесс завершается с кодом 0 по сигналу 11 - ошибка обращения к памяти. дочерний процесс только один где у меня косяк? Я еще неопытен, потому прошу ногами больно не бить, если что ![]() буду рад любому мнению по поводу кода. |
Автор: comcon1 30.11.2005, 19:21 | ||
Не разбирался, но скажу - strtok коряво реализована во многих *NIX-ах. У меня в ман-е написано:
Удачи! Юзай boost::tokenizer. Могу кинуть пример, если будет желание. |
Автор: oberonchik 5.12.2005, 20:26 | ||
не корректно так говорить -она реализована во-первых везде одинаково, а во-вторых не-коряво(насколько это и должно быть) просто она НЕ дла многопоточных приложений в многопоточных исользуют strtok_r которой если память не изменяет(лень лазить в man) надо передовать доп буфер (для её жизнедеятельности) |
Автор: День 7.12.2005, 21:36 |
Не поверите ![]() поменял new на malloc и ошибка исчезла! Когда стал тестировать программу на нескольких дочерних процессах, переписал strtok на strtok_r - и все ОК. подскажите boost на каких условиях распространяется и где ее можно скачать? |
Автор: AndrK 13.7.2006, 11:29 |
При выделении массива с помощью new, он должен удаляться как массив, а не как динамическая переменная... char* buff=new char[10]; //... что-то делаем ... delete[] buff; Обрати внимание на последнюю строку... именно delete[], а не delete... З.Ы. Но это не должно давать ошибку обращения к памяти (хотя возможно я ошибаюсь), это просто первое что бросилось в глаза, если это пренципиально, то пройдись дебагером, узнаешь где прога вылетает... |
Автор: bsa 14.7.2006, 13:51 | ||
http://www.boost.org/LICENSE_1_0.txt |