首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EXEC_BAD_ADDRESS

EXEC_BAD_ADDRESS
EN

Stack Overflow用户
提问于 2010-09-22 15:28:46
回答 1查看 145关注 0票数 0

也许这是this线程的延续,

程序编译时没有出现错误或警告,但当我运行它时,调用了处理程序函数,我得到了EXEC_BAD_ADDRESS

代码语言:javascript
复制
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 is a 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 for the 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 something with controller and var
};

我在选角的时候弄错了吗?我想不出这段代码失败的另一个原因。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-22 15:34:36

这是因为user_data_h很可能是一个局部变量,并且在调用trackbar_handler时已经被销毁。trackbar_handler在一个不再有效的指针上工作!

请检查是否可以动态分配user_data_h并使用回调调度注册该指针。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3767147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档