코드를 실행할 때 segfault가 수신되었습니다. 코드에 for 루프가 포함되어 있고 더 작은 반복을 위해 프로그램을 실행할 때 세그먼트 화 오류가 나타나지 않습니다. 큰 루프에 대한 코드를 실행할 때 나타납니다. 문제가 발생 미상 어디 확인하기 위해 디버거를 사용 :벡터를 사용하는 C++ 프로그램의 세그먼트 오류
Program received signal SIGSEGV, Segmentation fault.
0x00000000004062d0 in std::vector<int, std::allocator<int> >::push_back (
this=0x64dc08, [email protected]: 32)
at /usr/include/c++/5/bits/stl_vector.h:915
915 if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
그것은 무엇을 의미 하는가? 아는 사람 있나요? box_new
의 값이 경계를 벗어나 있기 때문에
int box_new = getBoxID(x[i],y[i],R0,nbox);
if(bx[i] != box_new)
{
vector<int>::iterator position = std::find(box_particles[bx[i]].begin(), box_particles[bx[i]].end(), i);
if (position != box_particles[bx[i]].end()) // .end() means the element was not found
box_particles[bx[i]].erase(position);
bx[i] = box_new;
box_particles[box_new].push_back(i);
}
* 코드에 for 루프가 포함되어 있습니다. * 루프를보고 싶습니다. –
코드 게시가 도움이 될 수 있습니다. 그러나 벡터의 크기를 지나서 접근하려는 것 같습니다. – kjpus
코드의 어느 부분인지는 알 수 없습니다. 잘못의 라인을 어떻게 찾을 수 있습니까? @kjpus –