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