C++ удаление мусорной памяти, сбой кода
всем привет. у меня еще один беспорядок.
я уверен, что это зависит от неправильного удаления мусора momory.
после вызова функции "Presentazione", когда компилятор достигает отмеченной строки, он терпит крах.
это наверняка пробем памяти.
<pre> #include <iostream> #include <stdlib.h> #include <unistd.h> #include <ctime> using namespace std; string* mostraCarta1() { string* Carta1 = new string[7]; Carta1[0]=" _____ "; Carta1[1]="|A |"; Carta1[2]="| ^ |"; Carta1[3]="| / \\ |"; Carta1[4]="| \\ / |"; Carta1[5]="| V |"; Carta1[6]="|____V|"; return Carta1; //delete[] Carta1; } string* mostraCarta2() { string* Carta2 = new string[7]; Carta2[0]=" _____ "; Carta2[1]="|A |"; Carta2[2]="| ^ |"; Carta2[3]="| /.\\ |"; Carta2[4]="|(_._)|"; Carta2[5]="| | |"; Carta2[6]="|____V|"; return Carta2; //delete[] Carta2; } string* mostraCarta3() { string* Carta3 = new string[7]; Carta3[0]=" _____ "; Carta3[1]="|A |"; Carta3[2]="| ^ |"; Carta3[3]="| ( ) |"; Carta3[4]="|(_'_)|"; Carta3[5]="| | |"; Carta3[6]="|____V|"; return Carta3; //delete[] Carta3; } string* mostraCarta4() { string* Carta4 = new string[7]; Carta4[0]=" _____ "; Carta4[1]="|A |"; Carta4[2]="| _ _ |"; Carta4[3]="|( v )|"; Carta4[4]="| \\ / |"; Carta4[5]="| V |"; Carta4[6]="|____V|"; return Carta4; //delete[] Carta4; } void Presentazione() { string Visualizza[7][5]; string *Valori; Valori=mostraCarta1(); for (int j = 0; j <7; j++) {Visualizza[j][1]=*(Valori+j); } Valori=mostraCarta2(); for (int j = 0; j <7; j++) {Visualizza[j][2]=*(Valori+j); } Valori=mostraCarta3(); for (int j = 0; j <7; j++) {Visualizza[j][3]=*(Valori+j); } Valori=mostraCarta4(); for (int j = 0; j <7; j++) {Visualizza[j][4]=*(Valori+j); } Valori=mostraCarta2(); for (int j = 0; j <7; j++) {Visualizza[j][5]=*(Valori+j); } for (int j = 0; j <7; j++) {cout<<Visualizza[j][1]<<endl; } system("pause"); system("CLS"); for (int j = 0; j <7; j++) {cout<<Visualizza[j][1]<<Visualizza[j][2]<<endl; } system("pause"); system("CLS"); for (int j = 0; j <7; j++) {cout<<Visualizza[j][1]<<Visualizza[j][2]<<Visualizza[j][3]<<endl; } system("pause"); system("CLS"); //------------------------------CRASH!!!!!!!!!!!!!!!!!!!! for (int j = 0; j <7; j++) {cout<<Visualizza[j][1]<<Visualizza[j][2]<<Visualizza[j][3]<<Visualizza[j][4]<<endl; } system("pause"); system("CLS"); } int main() {Presentazione(); system("pause"); exit(0); return 0; }
Что я уже пробовал:
for (int j = 0; j <7; j++) {cout<<Visualizza[j][1]<<endl; delete Visualizza[j][1];// tried this in all four subsequent for int loop. }