Code:
==573== Invalid read of size 1
==573== at 0x40273E8: memmove (mc_replace_strmem.c:517)
==573== by 0x8050CAC: Merchandise** std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<Merchandise*>(Merchandise* const*, Merchandise* const*, Merchandise**) (stl_algobase.h:377)
==573== by 0x8050CE6: Merchandise** std::__copy_move_a<false, Merchandise* const*, Merchandise**>(Merchandise* const*, Merchandise* const*, Merchandise**) (stl_algobase.h:396)
==573== by 0x8050D25: Merchandise** std::__copy_move_a2<false, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_algobase.h:435)
==573== by 0x8050D75: Merchandise** std::copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_algobase.h:466)
==573== by 0x8050D96: Merchandise** std::__uninitialized_copy<true>::uninitialized_copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_uninitialized.h:98)
==573== by 0x8050DB7: Merchandise** std::uninitialized_copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_uninitialized.h:122)
==573== by 0x8050DD8: Merchandise** std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**, Merchandise*>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**, std::allocator<Merchandise*>&) (stl_uninitialized.h:262)
==573== by 0x80516EC: std::vector<Merchandise*, std::allocator<Merchandise*> >::vector(std::vector<Merchandise*, std::allocator<Merchandise*> > const&) (stl_vector.h:249)
==573== by 0x804E47A: Station::findProduct(int) (Station.cpp:99)
==573== by 0x804D62F: Sector::findLowestSeller(int) (Sector.cpp:86)
==573== by 0x8052747: Ship::generateNewOrders() (Ship.cpp:519)
==573== Address 0x42ec8f7 is 1 bytes before a block of size 8 alloc'd
==573== at 0x402573E: operator new(unsigned) (vg_replace_malloc.c:224)
==573== by 0x8051211: __gnu_cxx::new_allocator<Merchandise*>::allocate(unsigned, void const*) (new_allocator.h:92)
==573== by 0x805123B: std::_Vector_base<Merchandise*, std::allocator<Merchandise*> >::_M_allocate(unsigned) (stl_vector.h:144)
==573== by 0x80517FE: std::vector<Merchandise*, std::allocator<Merchandise*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<Merchandise**, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise* const&) (vector.tcc:308)
==573== by 0x805198E: std::vector<Merchandise*, std::allocator<Merchandise*> >::push_back(Merchandise* const&) (stl_vector.h:694)
==573== by 0x8052D04: Ship::addCargo(int, int) (Ship.cpp:444)
==573== by 0x8052E00: Ship::buyCargo(int, int) (Ship.cpp:343)
==573== by 0x80533AA: Ship::tick() (Ship.cpp:188)
==573== by 0x804D34F: Sector::tick() (Sector.cpp:63)
==573== by 0x8056E28: main (main.cpp:77)
==573==
==573== Invalid read of size 1
==573== at 0x40273FA: memmove (mc_replace_strmem.c:517)
==573== by 0x8050CAC: Merchandise** std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<Merchandise*>(Merchandise* const*, Merchandise* const*, Merchandise**) (stl_algobase.h:377)
==573== by 0x8050CE6: Merchandise** std::__copy_move_a<false, Merchandise* const*, Merchandise**>(Merchandise* const*, Merchandise* const*, Merchandise**) (stl_algobase.h:396)
==573== by 0x8050D25: Merchandise** std::__copy_move_a2<false, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_algobase.h:435)
==573== by 0x8050D75: Merchandise** std::copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_algobase.h:466)
==573== by 0x8050D96: Merchandise** std::__uninitialized_copy<true>::uninitialized_copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_uninitialized.h:98)
==573== by 0x8050DB7: Merchandise** std::uninitialized_copy<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**) (stl_uninitialized.h:122)
==573== by 0x8050DD8: Merchandise** std::__uninitialized_copy_a<__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**, Merchandise*>(__gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, __gnu_cxx::__normal_iterator<Merchandise* const*, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise**, std::allocator<Merchandise*>&) (stl_uninitialized.h:262)
==573== by 0x80516EC: std::vector<Merchandise*, std::allocator<Merchandise*> >::vector(std::vector<Merchandise*, std::allocator<Merchandise*> > const&) (stl_vector.h:249)
==573== by 0x804E47A: Station::findProduct(int) (Station.cpp:99)
==573== by 0x804D62F: Sector::findLowestSeller(int) (Sector.cpp:86)
==573== by 0x8052747: Ship::generateNewOrders() (Ship.cpp:519)
==573== Address 0x42ec8f5 is 3 bytes before a block of size 8 alloc'd
==573== at 0x402573E: operator new(unsigned) (vg_replace_malloc.c:224)
==573== by 0x8051211: __gnu_cxx::new_allocator<Merchandise*>::allocate(unsigned, void const*) (new_allocator.h:92)
==573== by 0x805123B: std::_Vector_base<Merchandise*, std::allocator<Merchandise*> >::_M_allocate(unsigned) (stl_vector.h:144)
==573== by 0x80517FE: std::vector<Merchandise*, std::allocator<Merchandise*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<Merchandise**, std::vector<Merchandise*, std::allocator<Merchandise*> > >, Merchandise* const&) (vector.tcc:308)
==573== by 0x805198E: std::vector<Merchandise*, std::allocator<Merchandise*> >::push_back(Merchandise* const&) (stl_vector.h:694)
==573== by 0x8052D04: Ship::addCargo(int, int) (Ship.cpp:444)
==573== by 0x8052E00: Ship::buyCargo(int, int) (Ship.cpp:343)
==573== by 0x80533AA: Ship::tick() (Ship.cpp:188)
==573== by 0x804D34F: Sector::tick() (Sector.cpp:63)
==573== by 0x8056E28: main (main.cpp:77)
Entering Station::findMerchandise(int, std::vector<Merchandise*>)
==573==
==573== Invalid read of size 4
==573== at 0x804E00A: Station::findMerchandise(int, std::vector<Merchandise*, std::allocator<Merchandise*> >) (Station.cpp:81)
==573== by 0x804E493: Station::findProduct(int) (Station.cpp:99)
==573== by 0x804D62F: Sector::findLowestSeller(int) (Sector.cpp:86)
==573== by 0x8052747: Ship::generateNewOrders() (Ship.cpp:519)
==573== by 0x80532D8: Ship::tick() (Ship.cpp:165)
==573== by 0x804D34F: Sector::tick() (Sector.cpp:63)
==573== by 0x8056E28: main (main.cpp:77)
==573== Address 0x6e617254 is not stack'd, malloc'd or (recently) free'd
==573==
==573== Process terminating with default action of signal 11 (SIGSEGV)
==573== Access not within mapped region at address 0x6E617254
==573== at 0x804E00A: Station::findMerchandise(int, std::vector<Merchandise*, std::allocator<Merchandise*> >) (Station.cpp:81)
==573== by 0x804E493: Station::findProduct(int) (Station.cpp:99)
==573== by 0x804D62F: Sector::findLowestSeller(int) (Sector.cpp:86)
==573== by 0x8052747: Ship::generateNewOrders() (Ship.cpp:519)
==573== by 0x80532D8: Ship::tick() (Ship.cpp:165)
==573== by 0x804D34F: Sector::tick() (Sector.cpp:63)
==573== by 0x8056E28: main (main.cpp:77)
Here is Station::findProduct