C++ class allocation et pre-sizing

  • Créateur du sujet Créateur du sujet Mboum
  • Date de début Date de début
M

Mboum

Invité
Bonjour j'ai une petite question a laquelle je ne trouve pas de réponse ; voyons le cas suivant ;

- J'ai une librarie runtime qui se compile contre des dépendances
- J'ai des libraries front-end qui se compile contre le runtime

Bloc de code:
#ifdef build_runtime
         #include <otherlib_sdk_private.hpp>
#endif

namespace runtime
{
     class type_impl
     {

#ifdef build_runtime    
         foreign_class_type m_wrapped;
#endif
     };
}

#include <runtime>

namespace a_front_end
{
      class type
      {
           type_impl m_impl;
      };
}

donc question, si je compile "a_front_end lib" et que je cache les dépendances ; car imaginons que le runtime n'est pas délivré avec les headers des dépendances et sous forme d'une librairie; donc "class type" connait la taille de type_impl ; est-ce un problème si il ne connait pas la taille complète de type_impl ?

sizeof class type = sizeof (class type) + sizeof (class type_impl)
mais sizeof class type_impl = sizeof (type_impl) + sizeof (hidden ? )

j'essaye d'éviter un pointer car l'objet peut avoir de nombreuses instances et aussi de cacher les deps privées et qui sont assez conséquentes et entièrement pour le runtime qui expose les APIs publiques.
 
Bonjour. Je me répond a moi-même 8-), seulement certaines plateformes (linker) seront capables de résoudre l'`aligment` et `sizeof` du container déjà compilé ; donc non ce n'est pas une bonne idée ; ici je ne veux pas utiliser un pointer et un "opaque type" car les objets peuvent être utilisés énormément et cela pose des problèmes de fragmentation de mémoire (dyn alloc/dealloc, copy et cetera) et de performances.