Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103

    Errore gestione della memoria in c

    salve a tutti, sto provando a realizzare un programma che dato in input un array fino al carattere terminatore "-1" mi stampi una matrice di dimensioni NxN(dove N è la dimensione dell'array) e dove ogni elemento b[i][j]=a[i]*a[j]; l'ho realizzato, tutto ok, solo che con un input troppo "lungo" la piattaforma mi da errore di violazione del limite di memoria, potreste dare un occhiata al codice perfavore? Io sono due giorni che ci sbatto la testa ma non trovo soluzione.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int** prodottoscalare(int *a,int dim);
    
    
    int main()
    {
        int i=0;
        int c;
        int j;
        int *a;
        a=malloc(sizeof(int));
        while(c!=-1){
            scanf("%d",&c);
    
    
            if(c!=-1){
                a[i]=c;
                    i++;
                a=realloc(a,(i+1)*sizeof(int));
    
    
    
    
            }
    
    
        }
    
    
    int** b;
    b=prodottoscalare(a,i);
    for(j=0;j<i;j++){
        if(j!=0){
        printf("\n");}
        for(c=0;c<i;c++){printf("%d ",b[j][c]);}
    }
    return 0;
    }
    
    
    
    
    int **prodottoscalare(int *a,int dim){
        int i;
        int j;
        int **b;
        b=malloc(dim*sizeof(int));
        for(i=0;i<dim;i++){b[i]=malloc(dim*sizeof(int));}
        for(i=0;i<dim;i++){
            for(j=0;j<dim;j++){
                b[i][j]=a[i]*a[j];
            }
        }
       return b;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A parte questa

    b=malloc(dim*sizeof(int));

    che è sbagliata e dovrebbe essere

    b=malloc(dim*sizeof(int *));

    non vedo altro di evidente.

    Dicci cosa inserisci come dati che ti danno problemi e il messaggio esatto dell'errore.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    GRAZIE GRAZIE GRAZIE l'errore era proprio quello, ci sbattevo la testa da due giorni ma non l'avevo proprio notato....grazie ancora

Tag per questa discussione

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.