c++ - 为什么会崩溃?我如何解决它?

标签 c++ encryption crash partials

这是我的代码(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; 上崩溃。 。为什么会发生这种情况。 (P.S.这是另一个加密项目的一部分(可能是敏感部分[不是崩溃点或代码错误]被变成了“-----------------”(这不是实际的)代码)。

最佳答案

摆脱所有指针和所有删除。这里没有任何东西是用 new 创建的,所以没有什么可以删除的。好的,有 dataptr 应该被删除。但在所有解除引用的噪音中很难找到这一点。

关于c++ - 为什么会崩溃?我如何解决它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637000/

相关文章:

c++ - Windows 中崩溃进程的可预测退出代码

mysql - MySQL崩溃恢复如何恢复数据

c++ - 在没有类实例的情况下检查 C++ 模板中的类

c++ - 带指针的 void 函数

c++ - 如何使我的输出有空间(偶数和奇数)

java - 为什么 AES 加密/解密在 Android 24+ 上慢 3 倍以上?

java - RIJNDAEL 256 CBC加密与Java中的IV

c++ - 消除未使用的虚函数

Python PyCrypto 使用 AES 加密/解密文本文件

c++ - 在 VC++2010 环境之外运行时程序立即崩溃