# vectorのポインタは必ず初期化しようという話 ###### tags: `c++` 趣味プログラミング中に変なバグを踏んでいた(憤怒) なんでかなぁって思ったらvector* が初期化されていなかった。 ちなみに何が原因かは調査したけど分からなかった。 戒めのためにここに残しておくことにする。 以下に簡単な例を紹介する。 ## 例 ```c++ #include<bits/stdc++.h> class Human { public: std::string first_name; std::string last_name; Human() : first_name(), last_name() {} Human(std::string first_name, std::string last_name) : first_name(first_name), last_name(last_name) {} }; class Alien { public: std::string first_name; std::string last_name; Alien() : first_name(), last_name() {} Alien(std::string first_name, std::string last_name) : first_name(first_name), last_name(last_name) {} std::vector<Human> pets; }; int main() { Human human = Human("John", "Doe"); Human human2 = Human("Jake", "Doe"); Human* human_ptr = &human; Alien alien = Alien("Jane", "Doe"); std::vector<Alien> *alien_ptr = new std::vector<Alien>(); // std::vector<Alien> *alien_ptr; SIGSEGV alien_ptr->push_back(alien); std::cout << alien_ptr->at(0).first_name << std::endl; return 0; } ```