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 :

Allocation mémoire au démarrage


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Par défaut Allocation mémoire au démarrage
    Bonjour,

    Savez-vous si il existe des routines qui permettent à un programme de s’allouer de la RAM au démarrage et d'ensuite travailler directement à l’intérieur de cette mémoire allouée?
    J'ai recherché sur le net et j'ai rien trouvé et pourtant il me semble que c'est possible

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    malloc ?

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Effectivement malloc / calloc / free est la bonne réponse. C'est comme cela que l'on allouera de la mémoire vive pour notre programme (et que l'on pourra l'utiliser)
    Mais, je suspecte que l'ouvreur du sujet tente de faire, ce que l'on appelle une Memory Pool (piscine de mémoire ?)
    Une memory pool est une zone de mémoire que l'on alloue au début du programme (afin de faire plus d'allocation / ou d'être sur que nous avons de la mémoire) et dans laquelle nous allons piocher afin d'y mettre nos objets.
    Du coup, on arrivera facilement à voir que nous aurons des problèmes de fragmentation et autre trucs de ce genre, et c'est pour cela que je vous invite à faire un tour sur google avec la memory pool en recherche.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Par défaut
    C'est exactement ça. Mon application plante sur une machine et je suspecte un problème matériel sur la RAM. Pour éviter que mon application accède aux banc défectueux pendant l'exécution je voulais allouer la mémoire au démarrage du programme et ainsi soit mon programme plante tout de suite soit il ne plante plus (si il problème est bine là car j'en suis pas certain).

    Merci LittleWhite, je vais regarder.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par chat-pyrus Voir le message
    C'est exactement ça. Mon application plante sur une machine et je suspecte un problème matériel sur la RAM. Pour éviter que mon application accède aux banc défectueux pendant l'exécution je voulais allouer la mémoire au démarrage du programme et ainsi soit mon programme plante tout de suite soit il ne plante plus (si il problème est bine là car j'en suis pas certain).

    Merci LittleWhite, je vais regarder.
    Si il y a un problème avec la RAM, le système risque de planter sans prévenir et non que votre application.
    Maintenant, pour chaque appel à malloc il faut vérifié que le pointeur retourné est différent de NULL.
    Je pense que vous avez fait bêtise avec vos pointeurs ... et non que la RAM est défectueuse.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Si il y a un problème avec la RAM, le système risque de planter sans prévenir et non que votre application.
    Maintenant, pour chaque appel à malloc il faut vérifié que le pointeur retourné est différent de NULL.
    Je pense que vous avez fait bêtise avec vos pointeurs ... et non que la RAM est défectueuse.
    Je suis d'accord, un problème de ram engendrerai des plantage machine à répétition et potentiellement au démarrage. De plus elle est souvent vérifiée par le bios au démarrage (c'est la configuration par défaut de beaucoup de cartes mères)

    Des outils type valgrind ou purify peuvent aider a trouver les problèmes de gestion mémoire dans votre application.

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Si il y a un problème avec la RAM, le système risque de planter sans prévenir et non que votre application.
    Maintenant, pour chaque appel à malloc il faut vérifié que le pointeur retourné est différent de NULL.
    Je pense que vous avez fait bêtise avec vos pointeurs ... et non que la RAM est défectueuse.
    Je ne pense pas que ça vienne de mon programme car il tourne très bien sur une machine identique (et sur d'autre OS aussi). J'ai un problème vraiment que sur cette machine. De plus j'ai utilisé pas mal d'outils (mudflap, bound-checking, purify, etc ...) et aucun problème n'est détecté.
    Dans le core a chaque fois le plantage ce fait sur un malloc alors qu'il y a largement ce qu'il faut au niveau de la machine et le programme est démarré à unlimited.

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 477
    Par défaut
    Bonjour,

    Citation Envoyé par LittleWhite Voir le message
    ce que l'on appelle une Memory Pool (piscine de mémoire ?)
    Plutôt « bassin », dans ce sens. Mais ce terme n'est pas plus usité en français. Donc…

    =chat-pyrus;5741789]C'est exactement ça. Mon application plante sur une machine et je suspecte un problème matériel sur la RAM. Pour éviter que mon application accède aux banc défectueux pendant l'exécution je voulais allouer la mémoire au démarrage du programme et ainsi soit mon programme plante tout de suite soit il ne plante plus (si il problème est bine là car j'en suis pas certain).
    Si la machine en question est un PC, il existe memtest86+, en GPL, qui fonctionne au démarrage sans O.S., et qui est généralement proposé au démarrage des distributions de Linux.

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    j'ajouterais qu'un simple printf si l'allocation a échoué permettrait de savoir si c'est ça ou autre chose..

    Là on est obligé de te croire, mais en général quand on dit "mon programme marche, c'est cette machine qui marche pas", ça peut arriver dans de très très très rares cas, mais dans 99.9999999% du temps c'est le programme qui a une erreur....


    En admettant que cela soit l'allocation qui échoue, il serait bon alors de tester en partant de 1 et en augmentant le nombre de threads au fur et à mesure jusqu'à ta valeur réelle...

    En tous cas, je pense qu'il y a beaucoup de tests à faire avant de dire "c'est la faute de la machine"..

    Ne serait-ce que faire relire le code à quelq'un d'autre...

Discussions similaires

  1. Pb d'allocation mémoire malloc
    Par oz80 dans le forum C++
    Réponses: 5
    Dernier message: 18/11/2005, 17h23
  2. Limite Allocation Mémoire d'un tableau d'entier
    Par l9ft b9hind dans le forum C++
    Réponses: 5
    Dernier message: 27/10/2005, 19h29
  3. Allocation mémoire
    Par DestyNov@ dans le forum C++
    Réponses: 9
    Dernier message: 23/08/2005, 08h09
  4. [Pointeur] Allocation mémoire
    Par Rayek dans le forum Langage
    Réponses: 22
    Dernier message: 20/05/2005, 10h26
  5. Allocation mémoire dynamique
    Par ITISAR dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/01/2005, 09h59

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