Почему это сбой? Как мне это исправить?

Это мой код (C++).

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <sstream>
using namespace std;

void rotaryxorencrypt(int dat[],int len){
------------------------------
}
void encrypt(int dat[],int len){
    rotaryxorencrypt(dat,len);
}

void decrypt(int dat[],int len){
}

int main() {
    fstream file;
    fstream *fileptr=&file;
    file.open("tmp",ios::in);
    string line;
    string *lineptr=&line;
    int x;
    int *xptr=&x;
    int cont=0;
    int *contptr=&cont;
    int len;
    int *lenptr=&len;
    stringstream ss;
    stringstream *ssptr=&ss;
    string cryption;
    string *cryptionptr=&cryption;
    getline(*fileptr,*lineptr);
    try{
        if(*lineptr=="encryption"){
            *cryptionptr="encrypt";
        }else if(*lineptr=="decrypt"){
            *cryptionptr="decryption";
        } else {
            cout<<"Unknown Cryptography Type - "<<*lineptr<<endl;
            throw 0;
        }
        getline(*fileptr,*lineptr);
        *ssptr<<*lineptr;
        *ssptr>>*xptr;
        ss.str("");
        ss.clear();
        *lenptr=*xptr;
        int *dataptr;
        dataptr=new int[*lenptr];
        cout<<"Loading Formatted Data"<<endl;
        while ( getline (*fileptr, *lineptr) ) {
            *ssptr<<*lineptr;
            *ssptr>>*xptr;
            ss.str("");
            ss.clear();
            dataptr[cont]=*xptr;
            cont++;
        }
        file.close();
            delete lineptr;
        delete xptr;
        delete contptr;
        delete ssptr;
        delete fileptr;
        ------------------
        if(*cryptionptr=="encrypt"){
            cout<<"Beginning Encryption Process."<<endl;
            cout<<dataptr[0]<<endl;
            encrypt(dataptr,len);
            cout<<dataptr[0]<<endl;
            cout<<"Outputting Encrypted Data."<<endl;
        }else if(*cryptionptr=="decrypt"){
            cout<<"Beginning Decryption Process."<<endl;
            decrypt(dataptr,len);
            cout<<"Outputting Decrypted Data."<<endl;
        }
        cout<<"Clearing Cache."<<endl;
        delete []dataptr;
        delete cryptionptr;
        delete lenptr;
    }catch(int x){
        if(x==0){
            cout<<"Clearing Cache."<<endl;
            delete fileptr;
            delete lineptr;
            delete xptr;
            delete contptr;
            delete ssptr;
            delete fileptr;
        }else{
            cout<<"Unknown Error - Cannot Clear The Cache."<<endl;
        }
    }
    cout<<"here"<<endl;
    return 0;
    cout<<"here"<<endl;
}

Обратите внимание cout<<"here"<<endl; до и после return 0;, Без них у меня такая же проблема, поэтому они не проблема, но она выполнит первую cout<<"here"<<endl; но вылетит раньше второго. Если я удаляю второй, он делает то же самое, и если я удаляю первый, он просто падает, поэтому он падает на return 0;, ПОЧЕМУ ЭТО ПРОИСХОДИТ. (PS Это часть другого проекта в области шифрования (возможно, чувствительные части [не точки сбоя или ошибки кода) были превращены в "-----------------" (это не код).

1 ответ

Решение

Избавьтесь от всех указателей и всех deletes. Ничто здесь не было создано с new так что нечего удалять. Хорошо, есть dataptr который должен быть удален. Но это ужасно трудно найти во всем разыменовывающем шуме.

Другие вопросы по тегам