IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

strcpy() après mmap()


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    valkheim
    Invité(e)
    Par défaut strcpy() après mmap()
    Bonjour,

    J'ai quelques soucis quand j'essaie d'utiliser mmap()
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
          puts("use mmap");
          void *p;
          p = mmap(0, s, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
     
          if (p != MAP_FAILED)
            {
              puts("mmap success");
              return (p);
            }
          return (NULL);
    mon main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    int main()
    {
      printf("MMAP THRESHOLD : %d\n", MY_MMAP_THRESHOLD);
      base = NULL;
     
      size_t s = 262150;
      char *d;
      if ((d = my_malloc(s)) == NULL)
        printf("mmap casse\n"); exit(1);
     
      char *src = "test1\n";
      printf("this is d : %s\n", strcpy(d, src));
      munmap(d, s);
      //my_free(d);
     
      char *d1;
      if ((d1 = my_malloc(20)) == NULL)
        printf("malloc casse\n"); exit(1);
      char *s1 = "test 2\n";
      printf("%s\n", strcpy(d1, s1));
      my_free(d1);
    }
    ma compil : gcc -g blocks.c getlimits.c my_free.c my_malloc.c && valgrind ./a.out

    et mon output:
    │==6878== Memcheck, a memory error detector
    │==6878== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
    │==6878== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
    │==6878== Command: ./a.out
    │==6878==
    │MMAP THRESHOLD : 262144
    │use mmap
    │mmap success
    │==6878==
    │==6878== HEAP SUMMARY:
    │==6878== in use at exit: 0 bytes in 0 blocks
    │==6878== total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated
    │==6878==
    │==6878== All heap blocks were freed -- no leaks are possible
    │==6878==
    │==6878== For counts of detected and suppressed errors, rerun with: -v
    │==6878== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

    Pourquoi le 1er strcpy n'arrive pas à récupérer la région mappée ?
    Ca fonctionne bien avec sbrk(), j'aimerais reproduire ce comportement avec mmap.

    Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Ligne 9, tu exit de manière inconditionnelle.. Utilise le débugger à l'occasion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 17h16
  2. extraire 2 chiffres après virgule ?
    Par nerick dans le forum C
    Réponses: 2
    Dernier message: 13/12/2002, 17h10
  3. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  4. [interbase]Se logger après une première installation
    Par Ultra-FX dans le forum InterBase
    Réponses: 3
    Dernier message: 13/09/2002, 11h44
  5. Comment ne pas rejouer une animation après un clic ?
    Par mmmmhhh dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/09/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo