矢量push_back导致未处理的异常

时间:2013-02-16 00:25:51

标签: c++ vector push-back

在编译器尝试执行push_back操作之前,一切正常。 在if条件中返回正确的值 我已将项目声明为:

vector<int> items; // inside the header file.

//在.cpp文件中

void MsPs::findnSort()
{
    for(int i = 1; i<50 ; i++)
    {

        string temp = static_cast<ostringstream*>( &(ostringstream() << i) )->str();    // TO convert int i to a string temp
        if(findSupport(temp) >= MIS[i])
        {
            items.push_back(i);
        }

    }

}

弹出以下错误:

Unhandled exception at 0x5052ad4a (msvcp100d.dll) in PrefixScan.exe: 0xC0000005: Access violation reading location 0x3d4cccd1.

PS:我还有一个使用push_back操作的功能,并且工作正常。

任何人都可以帮我吗?

即使这也会出现同样的错误:

void MsPs::findnSort()
{
    for(int i = 1; i<50 ; i++)
    {

        items.push_back(i);
    }


}

1 个答案:

答案 0 :(得分:2)

我认为问题是当静态强制转换返回时,ostringstream被破坏了。因此,当调用str()时,指针悬空。试试这个:

void MsPs::findnSort()
{
    for(int i = 1; i<50 ; i++)
    {
        ostringstream blah;
        string temp = (blah << i).str();

        if(findSupport(temp) >= MIS[i])
        {
            items.push_back(i);
        }

    }

}