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 :

Bibliothèque Shared VS static en terme d'allocation de mémoire


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Bibliothèque Shared VS static en terme d'allocation de mémoire
    Bonjour à tous,

    J'utilise pour mon programme la bibliothèque libicuuc.so qui appelle lors de l'éxécution libicudata.so (17Mo) et elles sont toutes les deux montée dans la RAM,

    libicudata.so contient beaucoup plus que j'en ai besoin,

    On m'a dit d'aller vers libicu en statique => libicuuc.a et libicudata.a : ça permetterait de ne monter en mémoire que ce dont le programme a besoin et pas toutes les 17 Mo, le programme est destiné à une plateforme embarqué, alors la mémoire RAM c'est critique.

    J'ai essayé de le faire mais j'ai trouver beaucoup d'erreurs de compilation et de dépendances, Je veux savoir si c'est vrai, ce qu'on m'a dit, avant de me pencher encore dessus.

    Et merci à vous.

  2. #2
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    1. C'est quoi les erreurs? Sinon on peut pas vraiment t'aider pour tester en statique.
    2. Le fait de gagner de la place en statique n'est vrai que si le code est fait d'une certaine façon, ce qui n'est pas toujours le cas, donc ça peut aussi augmenter la taille finale de l'executable. Au final faut effectivement tester.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    En effet, lorsque tu utilises une bibliothèque dynamique, c'est l'ensemble de la bibliothèque qui devient disponible parce que chargé en mémoire, alors que, classiquement, lorsque tu utilises une bibliothèque statique, ce ne sont que les parties qui sont réellement utilisées qui seront insérées dans ton exécutable final.

    Cependant, il faut garder en mémoire le fait que tu feras peut etre appel à certaines fonctions de ta bibliothèque qui feront appel à d'autres fonctions de la bibliothèque et que ces dernières risquent aussi de faire appel à d'autres fonctions de la bibliothèque.

    Je vais m'arrêter là, mais tu auras sans doute compris que, en invoquant certaines fonctions particulières, tu risques fort d'avoir besoin... de l'ensemble de la bibliothèque

    Si tu en arrives à ce point, tu n'auras aucun avantage à passer par une bibliothèque statique au lieu d'une bibliothèque dynamique, bien au contraire :

    En effet, le contenu des bibliothèques statiques est inséré "au besoin" dans l'exécutable, ce qui fait que, non seulement, l'exécutable final devient plus gros, mais, en plus, tu perds la possibilité de mettre la bibliothèque à jour en cas de besoin.

    Par contre, avec le bibliothèques dynamiques, il est tout à fait possible que les développeurs résolvent des bugs ou ajoutent des fonctionnalités, et tu n'auras rien à faire d'autre pour faire prendre les modifications en compte que... de changer la dll (ou le so) pour sa nouvelle version.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    À condition que la bibliothèque conserve une rétro-compatibilité de l'ABI, ce qui n'est pas garanti et dépend fortement des développeurs de la bibliothèque.

  5. #5
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Ekleog Voir le message
    À condition que la bibliothèque conserve une rétro-compatibilité de l'ABI, ce qui n'est pas garanti et dépend fortement des développeurs de la bibliothèque.
    En effet...

    Mais bon, au niveau des bibliothèques statiques, aucune condition ne permet de passer d'une version à l'autre
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre éclairé
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Points : 879
    Points
    879
    Par défaut
    Sauf une recompilation. Au moins, ça évite les faux espoirs / les crashs impromptus irrécupérables.

Discussions similaires

  1. binding sur une propriété shared (vb) static (c#) ?
    Par Pol63 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 24/06/2009, 15h44
  2. shared et static
    Par sboffin dans le forum VB.NET
    Réponses: 5
    Dernier message: 22/11/2007, 15h42
  3. [Debutant]Allocation de mémoire
    Par gwendal84 dans le forum C
    Réponses: 6
    Dernier message: 07/12/2005, 19h04
  4. Double allocation de mémoire
    Par hunter001 dans le forum C++
    Réponses: 16
    Dernier message: 25/08/2005, 13h53
  5. pb d'allocation de mémoire
    Par shura dans le forum C
    Réponses: 7
    Dernier message: 17/04/2005, 21h10

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