Я прихожу из Java и изучаю С++ в данный момент. Я пользуюсь принципами и практикой использования С++ для Stroustrup Progamming. Сейчас я работаю с векторами. На стр. 117 он говорит, что доступ к несуществующему элементу вектора вызовет ошибку времени выполнения (то же самое в Java, индекс за пределами границ). Я использую компилятор MinGW и когда компилирую и запускаю этот код:
#include <iostream>
#include <cstdio>
#include <vector>
int main()
{
std::vector<int> v(6);
v[8] = 10;
std::cout << v[8];
return 0;
}
Это дает мне результат 10. Еще более интересно то, что если я не изменю несуществующий векторный элемент (я просто печатаю его, ожидая ошибки во время выполнения или, по крайней мере, значения по умолчанию), он печатает некоторые большие целые числа. Итак... неправильно ли Stroustrup, или у GCC есть некоторые странные способы компиляции С++?