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
Post a Comment