![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
eu6pc |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.3.2011 Репутация: нет Всего: нет |
Коллеги, добрый день!
Помогите, пожалуйста, моему горю: уже 3 дня бьюсь - не могу найти ошибку. Задача следующая: Сделать поиск файлов по содержимому в различных каталогах через потоки. Visual C++ 6. Вначале я ищу все нужные каталоги и ложу их в динамический массив. Затем запускаю потоки, и каждый поток ищет файлы в двух каталогах. Если файл находится - его имя заносится в динамический массив, используется мтьютекс. Проблема: если взять маленький каталог - все работает отлично, но если указать большой (например Install) - программа вылетает с ошибкой - операция обратилась к памяти по адресу ляляля, память не может быть read. Не могу понять в чем дело ? Если потоки запускать по одному - в цикле создавать и тут же ждать завершения - все работает. Если отпускаешь потоки все сразу (хотябы первые 6-10) - появляется эта ошибка... Ребята, подскажите, пожалуйста! Или хотя бы укажите в какую сторону копать... Вот участок кода: Функция main
а вот сама функция потока:
|
||||
|
|||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 1 Всего: 23 |
Попробуй расставить критические секции.
|
|||
|
||||
eu6pc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.3.2011 Репутация: нет Всего: нет |
Так вроде в единственном месте, где происходит запись в глабальный массив res - используется мтьютекс. А больше,вроде бы, ничего критического нету... или я не прав ?
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
А можно узнать глубокий смысл делать жуткую помесь из Win32 API/posix и C/C++ (malloc/new)?
По поводу ошибки могу предположить, что вы где то угробили память, но где именно сказать не могу (из за очень 'структурированного' и 'понятного' стиля программирования) ![]() |
|||
|
||||
eu6pc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.3.2011 Репутация: нет Всего: нет |
Контрольная работа, что ж с нее возьмешь... ;) Уже разобрался: нужно было поменять свойства проекта. Поставил многопоточность - все заработало!!!! спасибо всем за помощь! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |