在编译器尝试执行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);
}
}
答案 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);
}
}
}