项目.多进程SVG
Posted DrMess
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目.多进程SVG相关的知识,希望对你有一定的参考价值。
遇到的问题:
1、CreateWindowEx(...)返回0,但是 GetLastError() 返回也是0...
ZC:网上查了,说是 WN_CREATE消息没有正确的返回,会导致这个现象。我这里的情况是:在窗体创建过程中,调用了NULL指针的函数,于是 导致 创建过程报错了(但是 没有使用__try{}__except(...){},程序一点反应都没有,报错信息都没有...)
2、vc2010多线程使用std标准模板库容器DEBUG版迭代器BUG - CSDN博客.html(https://blog.csdn.net/lazyclough/article/details/7547610)
在vc2010多线程环境下使用std标准模板库容器 list 时, 如果是DEBUG版本, 迭代器存在BUG 在<list>文件中,以下代码块会出现非法访问错,实际上是在子线程中调用list的begin()方法返回迭代器时更改了 _Pnext 所指内存块的值。 #if _ITERATOR_DEBUG_LEVEL == 2 void _Orphan_ptr(_Myt& _Cont, _Nodeptr _Ptr) const { // orphan iterators with specified node pointers _Lockit _Lock(_LOCK_DEBUG); const_iterator **_Pnext = (const_iterator **)_Cont._Getpfirst(); if (_Pnext != 0) while (*_Pnext != 0) if ((*_Pnext)->_Ptr == this->_Myhead || _Ptr != 0 && (*_Pnext)->_Ptr != _Ptr) _Pnext = (const_iterator **)(*_Pnext)->_Getpnext(); else { // orphan the iterator (*_Pnext)->_Clrcont(); *_Pnext = *(const_iterator **)(*_Pnext)->_Getpnext(); } } #endif /* _ITERATOR_DEBUG_LEVEL == 2 */ 解决办法,跟踪_ITERATOR_DEBUG_LEVEL 宏定义,打开yvals.h文件,将157行的 #define _HAS_ITERATOR_DEBUGGING 1 改为 #define _HAS_ITERATOR_DEBUGGING 0
ZC:我跟踪下来,我出错的地方是这里:
我跟了一下,貌似 正常的情况是:*_Pnext 是 == 0的,而出错的情况是 (*_Pnext != 0) 。
我根据帖子的内容,也修改了 原来的源文件,前提是 事先做了备份(C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include\\yvals - 副本.h),把原来的源文件 也改成了 非只读的状态...
思考:我的情况里面 没有用到多线程啊,为什么也做这样?
3、
4、
5、
以上是关于项目.多进程SVG的主要内容,如果未能解决你的问题,请参考以下文章