定义了一个vector,然后通过循环向数组中赋值int nNum = myStruct.nsize();for(int i;i<nNum;i++)
{
.........variable//获得变量值,
  myStruct.legs.push_back(variable);
}可是执行到push_back的时候,nNum的值就变化了,例如,原来为1,执行到这里,就变为36,不知道为什么会变化,我加了一个变量,保存nNum值,push_back后,再将变量值赋给nNum,这样又会出问题,当nNum为2的时候,第二次执行循环体,就会报assert错误,显示_ASSERTE(_CrtIsValid HeapPointer(pUserData))错误。盼解答 谢谢^_^

解决方案 »

  1.   

    nNum 是不是在循环体内有过赋值操作
      

  2.   

    for(int i;i<nNum;i++)改成:
    for(int i=0;i<nNum;i++)另外,nNum 在循环内不要改变!
      

  3.   

    是写成for(int i=0;i<nNum;i++)另外nNum 在循环体内并没有赋值
      

  4.   

    你在循环中有没有取vector中的值?怎么取的
      

  5.   

    int nNum = myStruct.nsize();for(int i;i<nNum;i++)
    {
    .........variable// 获得变量值,
    myStruct.legs.push_back(variable);
    }
    ----------------------------------
    for(int i=0; i<myStruct.nsize(); i++)
    {
     ...
     myStruct.legs.push_back(variable);
    }
    THis????
      

  6.   

    你可以把可编译的代码发给我[email protected]
    我帮你调试一下
      

  7.   

    是不是
    int nNum = myStruct.size(); // 多了个字符 n哈哈...你这程序逻辑混乱啊..这个数组之前咋来的?
    vector默认初始化,size是0
      

  8.   

    呵呵 今天一直在调试,终于发现问题了,因为自己的机器不能上网,所以在这里就是写了个大概,说明一下出错原因:在vector数组赋值过程中没有对数组中已有元素进行操作,只是在添加新元素的时候,新元素的赋值出了错,所以引起push_back后,循环条件值变化并报错,修改赋值操作后,程序目前正常运行。为啥赋值出错会引起这个结果,目前还不知道,大家有想法的可以继续交流多谢大家继续关注,一周后结贴,谢谢^_^