Buongiorno a tutti,
Sto svolgendo un progetto universitario con dei colleghi in linguaggio c++, e abbiamo riscontrato il seguente problema:
utilizzando su due pc diversi visual studio 2017 e facendo girare lo stesso codice, otteniamo risultati diversi. Nello specifico l'unica differenza sta nel sistema operativo, il quale nel primo caso è Windows 7, mentre nel secondo è Windows 10. Il codice non ha alcun problema nel caso in cui il pc abbia come sistema operativo Windows 7, ma soltanto con Windows 10.
Per facilitare il calcolo di vari elementi facenti parte del progetto abbiamo creato delle librerie per eseguire facilmente operazioni con vettori e matrici (eg. matrice * vettore , matrice * matrice, ecc), tutte definite tramite array per ridurre notevolmente il tempo computazionale rispetto all'utilizzo di std::vector.
Con i vettori (std::vector) non abbiamo avuto nessun problema, mentre utilizzando gli array per definire la matrice, quindi utilizzando la notazione **M (puntatore di puntatore) abbiamo osservato il seguente fenomeno:
in modo casuale intere righe della matrice vengono sostituite da numeri molto grandi (e^22), compromettendo il risultato finale.
Aggiungo che facendo girare il codice, alcune volte otteniamo il risultato corretto, mentre altre (in modo del tutto casuale) otteniamo alcuni valori molto grandi.
Come detto, il problema insorge solo col pc con Windows 10. Visual studio ha gli stessi pacchetti installati in ogni pc e abbiamo provato su più pc ottenendo lo stesso risultato.
Crediamo che il problema possa essere dovuto ad una bad allocation dei pointers, ma non sappiamo come procedere.
PS: proveniamo tutti dal mondo dell'ingegneria e siamo alle prime esperienze sia con questo tipo di linguaggio di programmazione, sia con l'informatica in generale.
Grazie, saluti