Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] Puntatori ad array

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16

    [C] problemi con i puntatori ad array

    salve a tutti

    ho un piccolissimo problemino, sta facendo un programma con un mai iniziale che si richiama una funzione
    "void carica_immagine_in_A( double **A, int *n, int *m, int *p, double **h)"
    dove A e h sono array, sono doppi puntatori in quanto devono ritornarmi nel main. Fin qui tutto bene. Posto il codice così si capisce meglio

    codice:
     /*funzione che carica l'immagine nell'array A*/
    void carica_immagine_in_A(double **A, int *n, int *m, int *p, double **h)
    {
    
    /*dichiarazione delle variabili*/
    FILE *fp;
    int N,M,j,z,i;
    
    
    if((fp=fopen("dati5","r"))==NULL)
    
    	{
    
    	printf("Errore nell'aprire il file %s","dati5");
    
    	exit(1);
    
    	}
    
    
    
    fscanf(fp, "%d\n",&(*n));
    
    fscanf(fp, "%d\n",&(*m));
    
    fscanf(fp, "%d\n",&(*p));
    
    
    M=2*(*m);
    *h=(double*)calloc(M,sizeof(double));
    
    
    /*controllo se è posibile allocare h*/
    if(*h==NULL){
    	printf("Memoria insufficiente per allocare il vettore dei filtri");
    	exit(1);
    }
    
    
    for(j=0;j<M;j++)
    
     {
    
     fscanf(fp,"%lf",&(*h[j]));
     printf("\nj= %d ",j);	
    
     printf("h[%d]=%lf\n",j,*h[j]);	
    
     }
    }
    il problema è quando lo eseguo, quando legge il vettore h dopo un paio di passi fa "segmentation fault"
    M la vede e mi dice anche quanto è. L'array lo alloca. Non riesco a capuire dove sta il problema.
    Help me

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    16
    nessuno sa aiutarmi

  3. #3

    Re: [C] problemi con i puntatori ad array

    Originariamente inviato da dr kool
    codice:
    *h=(double*)calloc(M,sizeof(double));
    Qui stai allocando la memoria per contenere un singolo valore double. Devi allocarla per tutto l'array (numeroelementi*sizeof(tipoelementi)).
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.