Algorithm

[c++] segmentation fault (core dumped) error / assign() iterator

D0HAN. 2020. 7. 17. 03:11

구글링을 해보면, segmentation fault (core dumped) 에러는 주로

메모리 영역의 잘못된 접근에 의해 일어난다.

문제를 풀다가 assign에서 그런 에러가 나길래 찾아봤다.

template <class InputIterator>
void assign(InputIterator first, InputIterator last);
void assign(size_type n, const T& u);

assign의 정의인데, iterator를 이해하지 못하고 그냥 함수를 가져다 써서 생긴 문제였다.

원래 썼던 코드는 이것이었다. 

 copy_arr.assign(array[from], array[to]); 

* from, to는 int 변수

 

iterator를 넣어야 하는데 그냥 벡터의 인자에 접근했다.

고친 코드는

vector<int>::iterator aa;
vector<int>::iterator zz;
aa = array.begin() + from;
zz = array.begin() + to +1;
copy_arr.assign(aa,zz);

iterator의 형태로 받으니 정상적으로 작동했다.