一个函数有参数vector<Campaign>*p_list ,导致内存泄露问题。然而让DUILIB的richedit->SetText莫名报错:内存访问失败,duilib的richedit背锅了
程序崩溃提示:
0x0F3A88EE (msftedit.dll) (MiaoWeixin.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。
调试了一晚上BUG,注释掉richedit->SetText就不崩溃了。。
以为是richedit的bug,调试了一晚上无果。
睡觉的时候突然醒悟,肯定是其他地方内存泄露,导致这边richedit->SetText莫名出问题。
今早上起来又调了一上午的bug,终于定位到一个函数有参数vector<Campaign>*p_list ,导致内存泄露问题。
改成引用,程序不再崩溃。。
累。。。
以后少用指针吧。。
==============2017-2-11更新
发现是在非UI线程中操作richedit-SetText的问题,微软也建议不要再线程中操作UI,虽然大部分都正常,一旦遇到复杂的UI就可能发生异常。
网友评论