Форум программистов, компьютерный форум CyberForum.ru

STL и поток - C++

Восстановить пароль Регистрация
 
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
04.04.2011, 02:31     STL и поток #1
Есть вектор, объявленный в основной программе, состоящий из ссылок на компоненты типа TImage и TCheckBox:
C++
1
2
3
4
5
6
7
struct mass
{
TImage *img;
TCheckBox *Chek;
};
static std::vector<mass> ListImegov(300);
static std::vector<mass>::iterator ListIterator;
В отдельном потоке создаются эти компоненты.
Но как поток завершается обратится из основного потока к данным элементам по типу:

C++
1
2
3
ListIterator = ListImegov.begin();
ListIterator += 2;
Button2->Caption = ListIterator->img->Hint;
невозможно.
Выходит ошибка несуществующий или недопустимый адрес.
Хотя в отдельном потоке данный код работает без проблем.

Как с этим бороться не подскажите?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 02:31     STL и поток
Посмотрите здесь:

STL. Не работает вывод через << в поток когда использую итераторы :( C++
Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. C++
Скопировать поток и добавить ошибки в поток C++
C++ Скопировать поток в поток
C++ Стандартный поток и STL (std::copy to std::cout)
C++ STL Заполнить вектор длинной 10 случайными числами от 0 до 9 и вывести его в выходной поток
STL Заполнить двухмерный вектор таблицей умножения и вывести его в выходной поток C++
C++ STL Заполнить строку латинским алфавитом и вывести ее в выходной поток

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
04.04.2011, 07:38     STL и поток #2
Видимо, проблема в том, что память выделяется в одном потоке, а используется в другом.
Хотя, все потоки выполняются в одном адресном пространстве...
Я не знаю, как реализованы эти компоненты, ибо Борланд. Попробуй для создания объектов вызывать функцию из основного потока, не забыв про синхронизацию.

Добавлено через 2 минуты
В любом случае, память должна освобождаться в том же потоке, в котором она выделялась.
Zubossi
1 / 1 / 0
Регистрация: 24.02.2011
Сообщений: 62
04.04.2011, 11:05  [ТС]     STL и поток #3
Спасибо.
Заработало, не понятно только почему не работало до.
Yandex
Объявления
04.04.2011, 11:05     STL и поток
Ответ Создать тему
Опции темы

Текущее время: 19:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru