1. SDL检查对代码的影响,关闭sdl检查后,可能会发生条件变量无法唤醒线程的的情况,即调用std::condition_variable的mcdv.notify_one();无法唤醒m_cdv.wait()

2. memcpy尽量不要调用局部变量,不然会报0x00005不能及的崩溃。(莫名其妙,无法复现错误处)

3. 使用map的find函数要检查是否有相应数据,否则直接使用会发生iterator不能及的崩溃。

4. mfc里面的BEGIN_MESSAGE_MAP消息映射中对于不用的控件要删除,否则会崩溃。运行至界面绘制的虚函数的实现里面的CDialogEx::OnInitDialog();函数里发生崩溃。错误代码待复现。

5. 关注迭代器失效的问题:

VECTOR迭代器失效问题总结 - 查看原文章

VECTOR迭代器失效问题总结
(1)当执行erase方法时,指向删除节点的迭代器全部失效,指向删除节点之后的全部迭代器也失效
(2)当进行push_back()方法时,end操作返回的迭代器肯定失效。
(3)当插入(push_back)一个元素后,capacity返回值与没有插入元素之前相比有改变,则需要重新加载整个容器,此时first和end操作返回的迭代器都会失效。
(4)当插入(push_back)一个元素后,如果空间未重新分配,指向插入位置之前的元素的迭代器仍然有效,但指向插入位置之后元素的迭代器全部失效。

DEQUE迭代器失效总结:
(1)对于deque,插入到除首尾位置之外的任何位置都会导致迭代器、指针和引用都会失效,但是如果在首尾位置添加元素,迭代器会失效,但是指针和引用不会失效
(2)如果在首尾之外的任何位置删除元素,那么指向被删除元素外其他元素的迭代器全部失效
(3)在其首部或尾部删除元素则只会使指向被删除元素的迭代器失效。

Last modification:July 10th, 2022 at 11:37 am