c++ - Object getting deconstructed when out of scope -


i have class , has array of objects instance variable. each object internally contains int , struct. somehow object gets deconstructed.

i.e.

class allinput { public:     int numproducts;     product * products;  public:     allinput(int _numproducts, product * _products); };  class product { public:     int sellingprice; //ri     struct demanddistribution observationdemand; //c2i  public:     product(             lucydecimal _sellingprice, //ri             lucydecimal _costpriceassmbly); }; 

and have function creates it:

allinput* in1() {     struct demanddistribution * _observationdemand1 =             (demanddistribution*) malloc(sizeof(demanddistribution));     // set values     product * product1 = new product(165,_observationdemand1);     //initialize product2, product3, product4      product  products[4] = { *product1, * product2,  *product3, *product4};     allinput* = new allinput(4, products);     return all; } 

when allinput* in = in1(). executed, see each product among 4 gets deconstructed (thanks print statement in deconstructor of product). missing?

ps: need use pointer , not references because need next copy cuda memory.

you declared product products[4] on stack, released when outscoping (leaving function)

product  products[4] = { *product1, * product2,  *product3, *product4}; allinput* = new allinput(4, products); 

when constructing dymamicly allocated allinput, if don't copy products internal members of allinputs, when leaving function in1, products freed , pointer saved in allinput point junk.

so create dynamic allocation products too, or copy data (the array of pointers) in allinput.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -