c++ - EXEC_BAD_ADDRESS -


maybe continuation of this thread,

the program compiles without errors or warnings when run it, , handler function called, exec_bad_address

void maincontroller::show_color_trackbars(int *h, int *s, int *v){     string winname = "hsv trackbars";     namedwindow(winname, cv_window_autosize);      std::map<string, void*> user_data_h;     user_data_h["object"] = this; //this maincontroller object     user_data_h["h"] = h;     createtrackbar("trackbar_h", winname, h, 255, trackbar_handler, &user_data_h);  };  void trackbar_handler(int value, void *user_data){//callback track bar     std::map <string, void*> *user_data_map;     user_data_map = reinterpret_cast<std::map<string, void *> *>(user_data);      maincontroller *controller;     controller = reinterpret_cast<maincontroller *>((*user_data_map)["object"]);      int *var;     var = reinterpret_cast<int*> ((*user_data_map)["h"]);      //do controller , var }; 

i mistaking when casting? cannot think of reason code failing.

thanks in advance

that's because in probablity user_data_h local variable , destroyed when trackbar_handler called. trackbar_handler works on pointer no longer valid!

please check if okay have user_data_h dynamically allocated , register pointer callback dispatch.


Comments

Popular posts from this blog

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

c++ - Convert big endian to little endian when reading from a binary file -

openssl - Load PKCS#8 binary key into Ruby -