Me pregunto por qué no hay fallo de segmentacion (o indice fuera de rango en el vector) en el siguiente codigo..:
Código
#include <iostream> #include <vector> class alpha{ private: int x {0}; public: alpha(const int _x) : x{_x}{} }; int main(){ std::vector<alpha*> vA; for (int m{0}; m != 2; ++m) vA.push_back(nullptr); vA[0] = new alpha(0); //OK vA[1] = new alpha(1); //OK vA[2] = new alpha(2); //Aqui debe arrojar un error de subscript fuera de rango.. return 0; }
La duda me vino ya que estoy desrarollando un programa en Qt Creator, estoy usando GCC pero ahi nunca me arrojó un error, luego probé compilar en windows con msvc y ahi me arrojo el error, luego al revisar el codigo encontré sentido que arrojara el error porque realmente la linea vA[2] esta fuera de rango, no hay nullptr empujado en el vector en ese indice.... pero GCC lo acepto de todas formas.. no comprendo por qué
saludos.!
gracias.