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;
}

解决方案 »

  1.   

    应该没有问题啊!
    你用Debug看看,跟踪一下
      

  2.   

    这个问题的奇怪之处,就是DEBUG下没有问题,RELEASE下就有问题。我用的是VS2008,另外在VS2010下DEBUG和RELEASE都没有问题。
      

  3.   

    RELEASE下,你用Debug看看,跟踪一下
      

  4.   

    是不是RELEASE下和Debug下你的工程设置不同啊 
      

  5.   

    我看到网上的解释,说是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
      

  6.   

    可以肯定不是编码上的问题,MSDN上有人也问了同样的问题。
      

  7.   

    我在VS2008+RELEASE模式下debug,也是同样问题。
      

  8.   

    这个异常的意思是说传给C运行时库的参数不对。好像STL的编译有的时候会有问题,你给编译选项加个_SECURE_SCL=0试试
      

  9.   

    不要MFC和stl类库混着用,顺便说一句,MFC比stl还要早,是个残次品。。
      

  10.   

    项目中已经大量使用CArray<vector>这样的东西了,所以我想如果VS2010的确可以解决问题的话,就用VS2010重新编译一下,开发效率最高。只是我想VS2010是真的解决了,还是类似于采用_SECURE_SCL规避了。
      

  11.   

    你对win32汇编熟悉的话,在release模式下查看下调用栈
      

  12.   

    有谁知道VS2010是如何解决的呢?或者说VS2010是否声明过解决了这个问题呢?
      

  13.   

    我觉得原因是序列化不支持STL造成的,CArray的每一个成员vector<int>是没有序列化的
      

  14.   

    CArray的每一个成员vector<int>是没有序列化的,这个是了解的,但是问题显然跟这个没有关系。
      

  15.   

    release下也可以调试  
    vc6下没问题 
      

  16.   

    看下realeas与debug编译器在哪里处理的不同