Fau*_*ult -1 c++ valgrind set segmentation-fault
我不知道我在valgrind中的错误报告告诉我的是什么......但这是我的代码中与该问题相关的部分:
template<typename T>
struct CompareEvents {
public:
bool operator()(const T a, const T b) const {
return a.time < b.time ? true : false;
}
};
class EventManager {
public:
void EventManager::SendEvent(int delay, size_t sender, size_t receiver, size_t eventId) {
if (delay > 0) {
eventQueue.insert(Event((GetTime() + delay), sender, receiver, eventId)); //line 55
}
}
private:
std::set<Event, CompareEvents<Event>> eventQueue;
}
Run Code Online (Sandbox Code Playgroud)
事件只是一个简单的结构,它有四个参数(时间,发送者,接收者和ID).
从我的测试类调用SendEvent导致一个可爱的seg错误......看起来像这样(valgrind):
==998== Invalid read of size 8
==998== at 0x40D544: std::_Rb_tree<Event, Event, std::_Identity<Event>, CompareEvents<Event>, std::allocator<Event> >::_M_begin() (stl_tree.h:493)
==998== by 0x40D8C4: std::pair<std::_Rb_tree_iterator<Event>, bool> std::_Rb_tree<Event, Event, std::_Identity<Event>, CompareEvents<Event>, std::allocator<Event> >::_M_insert_unique<Event>(Event&&) (stl_tree.h:1261)
==998== by 0x40C44B: std::__cxx1998::set<Event, CompareEvents<Event>, std::allocator<Event> >::insert(Event&&) (stl_set.h:419)
==998== by 0x40ADE2: std::__debug::set<Event, CompareEvents<Event>, std::allocator<Event> >::insert(Event&&) (set.h:210)
==998== by 0x40A130: EventManager::SendEvent(int, unsigned long, unsigned long, unsigned long) (EventManager.cc:55)
==998== by 0x402D07: main (main.cc:28)
==998== Address 0x10 is not stack'd, malloc'd or (recently) free'd
Run Code Online (Sandbox Code Playgroud)
嗯......难看?main.cc:28是我的SendEvent调用,一个简单的:
EventManager::Instance()->DispatchEvent(3, 1, 1, 1);
Run Code Online (Sandbox Code Playgroud)
(它是作为单例类构建的,以防您想知道Instance()方法).
这就是我的问题.我不能做它的正面或反面,但我不知道,我是否将插入到我的std :: set中?我以前没用过套装,所以可能是这样吗?我需要初始化一些东西吗?我很困惑......
没有看到更多信息,这是一个猜测!
我猜EventManager你正在呼唤SendEvent的是NULL.该valgrind错误是告诉你,0x10的是,的valgrind没有关于线索的地址,0x10是一个不错的轮数,可能是16个字节偏移量的结构(EventManager),但你的指针是NULL.NULL + 0x10 = 0x10在大多数平台上.
这是愚蠢的容易检查:让在程序段错误gdb,跳转到的帧SendEvent号召,看是否this是NULL.
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |