ksj8121   3년 전

어디서 런타임에러가 나는지 잘 모르겠어요.....

dldyddlwl   3년 전

size() 함수를 쓸 때마다, unsigned와 signed가 일치하지 않습니다 라는 경고문구를 한번 쯤 보신 적이 있으실 겁니다.

for(i=0;i<=lis[p].size()-1;i++) 이 부분에서 lis[p].size()-1은 unsigned 이고, 만약 lis[p].size()가 1 이상이라면 딱히 문제가 될 것이 없습니다.

그러나 lis[p].size() 가 0이었다면, unsigned int에서 언더플로우가 발생합니다. ( 그리고 signed 와 unsigned 간의 연산은 unsigned로 승격하게 됩니다. )

그렇게 되면 i <= 큰 수, 가 되어 배열의 인덱스를 벗어나게 됩니다. 따라서, 이 부분을 i < lis[p].size() 로 조건을 변경한다면, 이와 같은 경우를 피하실 수 있습니다.

ksj8121   3년 전

배열크기가 0이 된다는 생각을 못했네요 감사합니다ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.