-1
我正在進行銀行模擬,作爲多態性練習,但我收到一些內存錯誤。 我可以malloc的每個向量的第一項,但如果我打電話的任何功能,程序崩潰。 同樣的情況發生,如果我嘗試malloc除1以外的任何數量的項目; (NCP或malloc的鑄造NCC> 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'。改用適當的容器(例如'std :: vector')。 –
另外,請不要轉儲數百行代碼。您應該努力尋找導致問題的*最小*程序,然後發佈。 –