找不到内存错误

Can't find memory error

本文关键字:错误 内存 找不到      更新时间:2023-10-16

我正在编程银行模拟,作为多态练习,但我遇到了一些内存错误。我可以对每个向量的第一项进行 malloc,但是如果我调用它的任何函数,程序就会崩溃。如果我尝试 malloc 除 1 以外的任意数量的项目,也会发生同样的情况;(NCP 或 NCC>Malloc 演员表中的 1

int main(){
ContaPoupanca *contasp;
ContaCorrente *contasc;
int k = 0;
int ncp = 3;
int ncc = 3;
(...)
    switch(k){
        case 1: {
            int asd;
            std::string nome_titular;
            int n_conta;
            std::cout<<"n 1 - Corrente n 2 - Poupança";
            std::cin >> asd;
            std::cout<<"nNome do Titular: ";
            std::cin>> nome_titular;
            if(asd == 1){
                std::cout<<"nº de aplicações: (max 5)n";
                std::cin>>asd;
                if(asd>5) asd=5;
                if(asd<0) asd=0;
                    ncc++;
                    n_conta = ncc + 2501000 - 1;
                    contasc = (ContaCorrente*) malloc(ncc*sizeof(ContaCorrente));
                    contasc[ncc-1] = ContaCorrente(nome_titular,n_conta,1.07,0,asd);
            }else{
             ncp++;
             n_conta = ncp + 2502000 - 1;
             contasp = (ContaPoupanca*) malloc(ncp*sizeof(ContaPoupanca));
             contasp[ncp-1] = ContaPoupanca(nome_titular,n_conta,1.05,0);
            }
            std::cout<<"nConta criada com sucesso.n O nº da conta é "<<n_conta<<"n";
            break;
        (...)
        case 6: {break;}
        }
    }while(k!=6);
free(contasc);
free(contasp);
return 0;

}

不要在C++对象上使用 malloc 或 free。请改用新建和删除。

Malloc 不调用任何构造函数,Free 不调用任何析构函数。这就是你崩溃的原因。新建和删除做。