我有自定义的地图类
template <class TKey, class TVal> class CLSimpleMap{};
typedef CLSimpleMap<DNSServiceRef/* Descriptor*/,int/*socket*/> ClientSocketMap;
我正在使用Bonjour Api枚举Wifi设备。
我有两个帖子
主线程:
回调处理线程:
我正在选择检查socket有什么东西,然后按下Bonjour回调。
我正在使用Crtical部分在ClientSocketMap上执行添加和删除
但令我惊讶的是,它在回调处理线程上尝试索引描述符ClientSocketMap时显示Heap损坏。
我不明白,为什么我收到此错误。这是由于线程? 帮我解决问题。
答案 0 :(得分:0)
在DNSServiceRef实现中检查operator ==() 此类实现基于数组,每次添加新元素时,都会移动一些旧元素。也许你使用旧指针。每次“添加”后,你的指针无效
MSDN:添加的每个键和值对都会释放并重新分配映射数组内存,以确保每个数据的数据始终是连续存储的。