LECTURE 문제 질문입니다.

  • User Avatar
    Bong32

    RTE (SIGSEGV: segmentation fault, probably incorrect memory access or stack overflow)

    소스
    ~~~ c++
    #include
    #include

    using namespace std;

    int main(int argc, char *argv[])
    {
    int num;
    cin >> num;
    string *third = new string [100];
    int cp=0;
    while(num>0)
    {
    string first;
    string *second= new string[100];
    cin>> first;
    int len = first.length();
    if(len >1000){ // string이 1000보다 길 경우 종료
    return 0;
    }

                char *ch;
                ch = new char[1000];
                for(int i=0; i< len; i++)
                {
                        ch[i]=first.at(i);
                        if('a' <= ch[i] && ch[i] <= 'z'){}
                        else { return 0;}
                        }
                for(int i=0; i<len; i++){
                    if(first.length()> 2*i){
                    second[i]=first.substr(i*2,2);
                    }
                   }
                for(int i=0; i<len; i++){
                        for(int y=0; y<len; y++){
                                if(second[i] < second[y]){
                                                 string change;
                                                 change=second[i];
                                                 second[i]=second[y];
                                                 second[y]=change;
                                                    }
                                                }
                                            }
                for(int i=0; i<len; i++){
                        third[cp] += second[i];
                        }
               num--;
               cp++;
               delete [] ch;
               delete [] second;
    }         
    for(int i=0; i<cp ; i++){
            cout << third[i] << endl;
            }   
    delete [] third;
    system("PAUSE");
    return EXIT_SUCCESS;
    

    }
    ~~~

    오버스택 때문에 동적할당도 해보고 배열수도 줄여보고 여러번 해봤지만 자꾸 런타임오류가 뜹니다.. 제 수준에서 해결하기가 힘들어서 질문올립니다.
    뭐가문제일까요...ㅜㅠ


    11년 전
3개의 댓글이 있습니다.
  • User Avatar
    Being

    최소한 코드 들여쓰기는 맞춰 주세요.


    11년 전 link
  • User Avatar
    Taeyoon_Lee

    second[i]=first.substr(i*2,2);
    i가 최대 499까지 될 수 있는 것 같은데, second 배열은 100개를 잡으셨네요.


    11년 전 link
  • User Avatar
    Being

    그리고 third에 second를 넣으시는 부분에도 문제가 있습니다.


    11년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.