stl — C ++ std :: vector & lt; bool & gt; выдает неинициализированную ошибку чтения при использовании drmemory

Я использую контейнеры stl в своем проекте, и я обнаружил странную ошибку, которую я не могу объяснить. Давайте рассмотрим следующий код:

#include <iostream>
#include <vector>

int main(int argc, char** argv)
{
std::vector<bool> vec;
vec.resize(5, false);
std::cout << vec.at(0);
}

Это выдает 0, как и ожидалось, но если я запускаю проверку памяти с помощью drmemory, он обнаруживает неинициализированное чтение. Кто-нибудь может помочь в понимании этого поведения?

Платформа: win32;
Компилятор: mingw32 — gcc 4.7.2;
Drmemory 1.6.0 — сборка 2

6

Решение

std::vector<bool> это странная мелочь, использующая немного твиддлинга для достижения своих целей. Я был бы рад в этом случае предположить, что то, что вы видите, это просто красная сельдь.

Что, как говорится, вам может быть лучше с другим контейнером, так как эта специализация шаблона повсеместно презирается.

8

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector