J'ai 2 processus (Client et Serveur) qui communiquent via la mémoire partagée.C - Carte dynamique 2D (double pointeur) - Mémoire partagée
J'ai besoin de créer un tableau 2D dynamique (basé sur les paramètres). Le tableau est stocké dans une structure, puis écrit dans le segment partagé.
Je peux écrire le tableau dans la mémoire partagée, mais je ne peux pas le récupérer dans l'autre processus.
Code client:
struct shared_use_st {
int written_by_you;
int **PID_PRI_array;
};
/* Prepare Dynamic 2D array */
data_store = malloc(/*ROWS*/ 5 * sizeof(int*));
for(i=0;i<5; i++)
data_store[i] = malloc(/*COLS*/ 2 * sizeof(int));
/* Prepare Dynamic 2D array - Shared Memory Seg */
shared_stuff->PID_PRI_array = malloc(/*ROWS*/ 5 * sizeof(int*));
for(i=0;i<5; i++)
shared_stuff->PID_PRI_array[i] = malloc(/*COLS*/ 2 * sizeof(int));
/* Write PID and PRI to data_store array */
data_store[0][0] = pid;
data_store[0][1] = 1;
data_store[1][0] = 12345;
data_store[1][1] = 2;
data_store[2][0] = 12346;
data_store[2][1] = 3;
data_store[3][0] = 12347;
data_store[3][1] = 4;
data_store[4][0] = 12348;
data_store[4][1] = 5;
for(i=0;i<5;i++){
for(x=0;x<=1;x++){
shared_stuff->PID_PRI_array[i][x] = data_store[i][x];
}
}
Code Serveur:
for(i=0;i<5;i++){
printf("PID: %d, PRI:%d\n", shared_stuff->PID_PRI_array[i][0], shared_stuff->PID_PRI_array[i][1]);
}
J'obtiens une erreur "Erreur de segmentation".
Merci.
L'adresse de la mémoire partagée est-elle la même dans les deux processus? Si ce n'est pas le cas, les pointeurs ne fonctionneront pas. –
Oui, ils sont identiques :) –