Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1677 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Mmap probleme d allocation memoire d un tableau double entrée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mmap probleme d allocation memoire d un tableau double entrée

n°760166
spontex
Posté le 11-06-2004 à 11:02:41  profilanswer
 

Bonjour,
 

Code :
  1. //liste=(char **) malloc ( sizeof (char ) * 10 * 10);  
  2.    //liste[0]=(char *)malloc(10*sizeof(char));
  3.     liste=(char **)mmap(NULL,sizeof(char) * 10 * 10 ,PROT_READ|PROT_WRITE,MAP_SHARED,desc,0);   //partie qui ne fonctionne pas
  4.   //   liste[0]=(char *)mmap(NULL,TAILLE_NOM_CHANNEL*sizeof(char) ,PROT_READ|PROT_WRITE,MAP_SHARED,desc,0); //partie qui ne fonctionne pas
  5. if(fgets(liste[0],TAILLE_NOM_CHANNEL,stdin)==NULL)exit(EXIT_SUCCESS);
  6.    perror("mom erreur" );
  7.    printf("j ecris %s\n ",liste[0]);


 
j ai laisser des lignes en commentaires pour vous laisser imaginer toute les solutions que j ai imaginé.
 
Maintenant vla le probleme, j essaye d alloué de la memoire pour un tableau a double entrée grace à mmap, seulement ca ne parait pas vraiment possible. Quelqu un aurait un petit tips, merci d avance.
 
p.s: il me balance un segmentation fault


Message édité par spontex le 11-06-2004 à 11:08:05
mood
Publicité
Posté le 11-06-2004 à 11:02:41  profilanswer
 

n°760222
DeirElBahr​i
Posté le 11-06-2004 à 11:30:27  profilanswer
 

pr allouer un tableau a double entree, il faut d abord allouer le tablo..puis boucler dessus pour allouer chaque case.. non ?

n°760236
spontex
Posté le 11-06-2004 à 11:39:50  profilanswer
 

normalement oui, mais justement c la mon probleme c que ca fonctionne pas avec mmap

n°760826
spontex
Posté le 11-06-2004 à 20:42:12  profilanswer
 

snif personne me répond, pourtant on m avais parler d un super Taz ;) qui savait tout sur tout, j ai du me tromper.

n°760843
Taz
bisounours-codeur
Posté le 11-06-2004 à 21:14:55  profilanswer
 

ben tu veux que je te dises quoi ? pour sur que ça fonctionne, malloc est implémenté avec des mmap [:kadreg] alors
 
//liste=(char **) malloc ( sizeof (char ) * 10 * 10);  
     //liste[0]=(char *)malloc(10*sizeof(char));
 
 
déjà là, c'est 100 char que tu alloues, et pas 10 char* ... donc boom ... commence par faire marcher pour de vrai avec malloc

n°760850
spontex
Posté le 11-06-2004 à 21:24:37  profilanswer
 

les lignes en commentaires sont juste la pour se faire une idée de TOUT les essais que j ai pu faire. malheuresement, le mmap pour les tableaux a double entré n as pas l air de fonctionner comme les mallocs. car lorsque le mot est rentré dans liste[0] par fget, l adresse liste[0] n est plus valide, de la meme facon avec un strcpy.
D ailleurs un printf sur liste fonctionne.


Message édité par spontex le 11-06-2004 à 21:27:43
n°760852
Taz
bisounours-codeur
Posté le 11-06-2004 à 21:28:01  profilanswer
 

ça ne marche déjà pas avec malloc alors commence par résoudre ce problème, ensuite on verra ...
 
surtout ça veut dire quoi « n as pas l air de fonctionner »

n°760855
Taz
bisounours-codeur
Posté le 11-06-2004 à 21:32:03  profilanswer
 

d'ailleurs je comprends pas trop ce que tu veux faire en SHARED sur un fichier, d'ailleurs, la taille du fichier, comment est-elle ? quel intérête de multiplier les mmap plutot que d'en faire un seul avec un calcul d'adresse à la main ? l'intéret d'utiliser la même projection à 36 endroits ?

n°760859
spontex
Posté le 11-06-2004 à 21:37:16  profilanswer
 

Euh, avec les mallocs sa fonctionne sans probleme peut etre pas se qui sont en commentaires, mais j ai deja tester ca marche no prob.
le ca "n as l air de fonctionner" ben c'est j ai fais plusieur essai, un mmap unique, plusieur mmap different rien n y fais je perd toujours liste[0].
sinon le pkoi, ben tout simplement un projet de systeme, ou l on doit utiliser les semaphores, la memoire partagé et les files de messages.


Message édité par spontex le 11-06-2004 à 21:37:54
n°760863
Taz
bisounours-codeur
Posté le 11-06-2004 à 21:46:10  profilanswer
 

et ça te fais rien de faire une projection en SHARED avec des pointeurs dedans et surtout de l'utiliser 36 fois pour être sur de pas savoir ce qu'il y a dedans ...

mood
Publicité
Posté le 11-06-2004 à 21:46:10  profilanswer
 

n°760878
spontex
Posté le 11-06-2004 à 22:15:17  profilanswer
 

comment ca pour l utiliser 36 fois pour etre sur de pas savoir ce qu il y a dedans? je l utilise une seule fois pour mettre le "mot" a l interieur. tu ferais comment toi pour initialiser le tableau a deux dimensions avec le mmap, pour ensuite rentrer une chaine de charactere dans le premier tableau.

n°760881
Taz
bisounours-codeur
Posté le 11-06-2004 à 22:17:52  profilanswer
 

en utilisant mmap correctement  
 
parce que fair des trucs du genre
 
liste = malloc( /* */);
liste[0] = liste
 
 
ça fait toujours du bien


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Mmap probleme d allocation memoire d un tableau double entrée

 

Sujets relatifs
surligner lignes tableauProbleme avec Unicode
Question sur la memoireprobleme pour actualiser une table
Problème grave de sécurité !Questions sur la mémoire
Chercher une chaine dans un tableau PHPProblème d'accent avec parseur XML en Perl
Probleme de synchronisation de bases MySQL: utiliser SQLyog ?Probleme de quote
Plus de sujets relatifs à : Mmap probleme d allocation memoire d un tableau double entrée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR