g++ - Why after compile c++ code with -O3 flag function generate wrong output? -


when in main function write

  function fun;   fun.addname("string1");   std::cout << fun.getnumberofindeks(); 

i see on screen 2 different numbers:

  • 1 (error) when g++ have -o3 flag
  • 0 when g++ have -o0 flag

below definition of class , methods:

class ifunction {    public:      virtual void addname(std::string nazwa_funkcji) = 0;      virtual std::size_t getnumberofindeks() = 0; };  class function: public ifunction  {     public:        function();       void addname(std::string nazwa_funkcji);        std::size_t   getnumberofindeks();      private:        std::vector<std::unique_ptr<std::string>> vp_nazwy_indeksow_;        std::unique_ptr<::std::string> p_nazwa_; }  function::function():p_nazwa_(new std::string("")) {  }  std::size_t function::getnumberofindeks() {     vp_nazwy_indeksow_.size(); }  void function::addname(std::string nazwa_funkcji) {     std::unique_ptr<::std::string> pl_nazwa_funkcji (new std::string(nazwa_funkcji));     p_nazwa_ = std::move(pl_nazwa_funkcji); } 

when comment second line

function fun; //fun.addname("string1"); std::cout << egzfunkcji3.getnumberofindeks(); 

i see on screen expected zero g++ flag -o3. where problem ?

here's function:

std::size_t function::getnumberofindeks() {     vp_nazwy_indeksow_.size(); } 

i count 0 return statements result in undefined behavior.

if compiler didn't warn or error this, compiler trash , should replaced better one.


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -