Я использую контейнеры 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
std::vector<bool>
это странная мелочь, использующая немного твиддлинга для достижения своих целей. Я был бы рад в этом случае предположить, что то, что вы видите, это просто красная сельдь.
Что, как говорится, вам может быть лучше с другим контейнером, так как эта специализация шаблона повсеместно презирается.
Других решений пока нет …