hur.cn - 华软网

 热门搜索

请教一个BUG的解决。

  作者:未知    来源:网络    更新时间:2011/9/13
BUG代码如下,这两个函数在RELEASE编译后执行时都会触发0xc0000417异常,查了很长时间没有解决,请大家帮忙看看。

CArray<vector<int>> testArray;

test1()
{
vector<int> a1;
a1.push_back(1);
testArray.Add(a1);
testArray.Add(a1);
testArray[0].push_back(2);
}

test2()
{
vector<int> a1;
a1.push_back(1);
testArray.Add(a1);
testArray.Add(a1);
vector<int>::iterator itr = testArray[0].begin();
*itr;
}

---华软 网友回答---
应该没有问题啊!
你用Debug看看,跟踪一下
---华软网友回复---
这个问题的奇怪之处,就是DEBUG下没有问题,RELEASE下就有问题。

我用的是VS2008,另外在VS2010下DEBUG和RELEASE都没有问题。
---华软网友回复---
RELEASE下,你用Debug看看,跟踪一下
---华软网友回复---
是不是RELEASE下和Debug下你的工程设置不同啊 
---华软网友回复---
你看哈是不是编码的问题,vs2005以上的编码都看得比较重。。。
---华软网友回复---
我看到网上的解释,说是VS2008才有的问题,VS2005和VS2010没有这个问题。但是这想知道VS2010是如何解决的,是解决了还是碰巧没有出现?

http://social.msdn.microsoft.com/Forums/zh-CN/vcgeneral/thread/fd933ed4-979b-4401-a0bf-b5a06149164c
http://connect.microsoft.com/VisualStudio/feedback/details/549044/carray-of-vectors-crashing-when-accessing-the-first-vector-in-release-mode


---华软网友回复---
可以肯定不是编码上的问题,MSDN上有人也问了同样的问题。
---华软网友回复---
我在VS2008+RELEASE模式下debug,也是同样问题。
---华软网友回复---
这个异常的意思是说传给C运行时库的参数不对。

好像STL的编译有的时候会有问题,你给编译选项加个_SECURE_SCL=0试试
---华软网友回复---
不要MFC和stl类库混着用,顺便说一句,MFC比stl还要早,是个残次品。。
---华软网友回复---
项目中已经大量使用CArray<vector>这样的东西了,所以我想如果VS2010的确可以解决问题的话,就用VS2010重新编译一下,开发效率最高。只是我想VS2010是真的解决了,还是类似于采用_SECURE_SCL规避了。
---华软网友回复---
忽略libc
---华软网友回复---
你对win32汇编熟悉的话,在release模式下查看下调用栈
---华软网友回复---
有谁知道VS2010是如何解决的呢?或者说VS2010是否声明过解决了这个问题呢?
---华软网友回复---
我觉得原因是序列化不支持STL造成的,CArray的每一个成员vector<int>是没有序列化的
---华软网友回复---
学习~
---华软网友回复---
CArray的每一个成员vector<int>是没有序列化的,这个是了解的,但是问题显然跟这个没有关系。
---华软网友回复---
期望本帖能吸引更多的高手来解决问题。
---华软网友回复---
release下也可以调试  
vc6下没问题 
---华软网友回复---
帮顶!!!
---华软网友回复---
看下realeas与debug编译器在哪里处理的不同
---华软网友回复---
比较失望啊。结分!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。