Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    HELP!Impossibile in C accedere ad array con più tot elementi

    Buongiorno,
    vi chiedo una mano perchè non ci capisco più nulla! :muro: devo semplicemente azzerare una grossa matrice bidimensionale di double, ma se scrivo questo codice in C:

    codice:
    #define MAXVAR 5000
    #define MAXCON 500
    typedef struct matrix{
    	
    	double mat[MAXCON][MAXVAR];	
    	long m;	
    	long n;
    	
    } matrix;
    
    int main(){
    long i,j;
    matrix t;
    for(i=0; i<MAXCON; i++)
     for(j=0; j<MAXVAR; j++)
    	t.mat[i][j]=0.0;
    }

    Puntualmente quando compilo mi viene dato un errore di segmentazione. Soltanto se porto la costante MAXVAR ad un massimo di 505 elementi allora tutto fila liscio, se invece aggiungo anche solo un elemento tutto scoppia: ma come è possibile? Vi ringrazio di cuore!

  2. #2
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    Invece di creare la matrice cosi:
    double mat[MAXCON][MAXVAR];

    creala dinamicamente, ad esempio con malloc(size_t n)
    http://www.cplusplus.com/reference/cstdlib/malloc/


  3. #3
    Stai cercando di allocare una struct da 19 MB sullo stack, che normalmente è grande 1-2 MB, per cui ottieni uno stack overflow. La soluzione, come già detto da mamo139, è ricorrere all'allocazione dinamica.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Eh sì, è proprio come dite voi mamo139 e MItaly... Vi ringrazio moltissimo!!! Buon fine settimana!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.