2013-04-18 3 views
1

Je souhaite disposer d'un tableau de k tableaux de 2 éléments d'entiers. Mon code:Pointeurs et tableaux multidimensionnels

int **pipe_fd_ptr; 
pipe_fd_ptr = malloc(k*sizeof(int*)); 
for(i = 0; i < k; i++) 
{ 
    pipe_fd_ptr = malloc(2*sizeof(int)); 
} 

// this is just for testing 
for(i = 0; i<k; i++) 
{ 
    for(j=0;j<2;j++) 
     pipe_fd_ptr[i][j] =j; 
} 

Je reçois une erreur de segmentation. Qu'est-ce que je fais mal?

Répondre

3

Devrait être

for(i = 0; i < k; i++) 
{ 
    pipe_fd_ptr[ i ] = malloc(2*sizeof(int)); 
} 

Avec pipe_fd_ptr = malloc(k*sizeof(int*)); vous espace alloué pour les pointeurs de k à int vous itérer la cuvette tableau et allouer de la mémoire pour chaque pointeur avec pipe_fd_ptr[ i ] = malloc(2*sizeof(int));

+0

+1 pour l'explication :) – MOHAMED

1
for(i = 0; i < k; i++) 
{ 
    pipe_fd_ptr[i] = malloc(2*sizeof(int)); 
} 
+0

moi stupide ...: ( – pmichna