Allocazione memoria [Matrice][Bidimensionale] dinamica c++

di
Anonimizzato6081
il
2 risposte

Allocazione memoria [Matrice][Bidimensionale] dinamica c++

Salve a tutti ho un problemino a riguardo l'allocazione della
memoria dinamica su matrice bidimensionale. Grazie.

Ho creato un'applicazione dove devo allocare in memoria "dinamica" una matrice
bidimensionale di moltissimi record [Righe] e con un massimo di 20 Colonne [Vettori].
E' un programma per lo sviluppo delle combinazioni ,il famoso calcolo combinatorio.
Il punto è che non riesco a controllare l'errore di memoria esaurita il programma
va in crash.
Ho il PC con una memoria Ram libera di circa 1 Giga riesco a sviluppare circa 25 numeri in
undicina.
Mi spiego meglio postando il codice c++.


#define NULL 0

// alloco la matrice bidimensionale
int **Combinazione = new int *[Numero_Righe];

for (__int64 i = 0; i < Numero_Righe; i++){
Combinazione = new int[Lunghetta]; // Lunghetta rappresenta le 20 colonne

if(Combinazione == NULL) // Questo frammento di codice non fà il suo dovere perchè?
cout <<"Memoria insufficente\n";

}





// Ho preso spunto da questo frammento di codice scritto in un libro
// che usa una matrice monodimensionale

#define NULL 0
#define SIZE 512

int *Memory;

Memory=new int[SIZE];

if (Memory == NULL)
cout << "Memoria insufficente \n";
else
cout << "Memoria allocata \n";
delete(Memory);

2 Risposte

  • Re: Allocazione memoria [Matrice][Bidimensionale] dinamica c++

    if(Combinazione == NULL) // Questo frammento di codice non fà il suo dovere perchè?
    Cosa sarebbe 'Combinazione' ? O meglio cosa pensi possa essere?

    Consiglio di allegare l'intero codice compilabile per un debug approfondito.

    Saluti,
    Max
  • Re: Allocazione memoria [Matrice][Bidimensionale] dinamica c++

    Ciao a tutti voglio darmi la risposta all'errore che ho
    commesso nel codice che ho scritto in questa maniera possa essere
    di aiuto a qualcuno in futuro.

    Cominciamo....la dichiarazione corretta di una matrice "bidimensionale" si
    si srive così.


    int Colonne =10 ;
    int Righe =5;


    //Ricordo che righe è in verticale dunque...
    // 0 Righe
    // 1 Righe
    // 2 Righe
    // 3 Righe
    // ecc ecc...




    // alloca la matrice c++
    int **Combinazione = new int *[Righe];

    if (Combinazione==NULL) // Controlla se la memoria (dinamica) disponibile è sufficente
    cout << "Memoria insufficente\n";

    for (int i = 0; i < Righe i++)
    Combinazione = new int [Colonne];



    ciao Tipotalpo:
Devi accedere o registrarti per scrivere nel forum
2 risposte