Невозможно разыменовать инициализированный значением итератор deque - PullRequest
0 голосов
/ 28 октября 2018

У меня есть одна нить, заполняющая очередь вызовами обратного вызова.Этот поток сначала блокирует мьютекс, а затем делает свое дело.

Второй поток получает указатель deque оригинальной deque и просто читает его, и я получаю сообщение об ошибке «невозможно разыменовать инициализированный значением итератор deque» при чтении deque.Я проверил, и я не выхожу за пределы deque.

Вот псевдокод:

// Thread 1
deque<float> main_deque;

void FillDeque()
{
    MutexLock Lock(mutex);

    for (size_t i = 0; i < main_deque.size(); i++)
    {
        main_deque.push_back(-10.0);
    }
}

// Thread 2

void ReadDeque(deque<float> *main_deque)
{
    for (size_t i = 0; i < main_deque->size(); i++)
    {
        float a = (*main_deque)[i];
    }
}

РЕДАКТИРОВАТЬ: Если я изменяю deque на vector, все работает правильно.

...