• [^] # Re: Fin de la pureté de Java

    Posté par . En réponse à la dépêche Java 8 et NetBeans 8 sont disponibles. Évalué à 2.

    Oui, tout objet est alloué sur le tas, mais ça ne veut pas dire que lors de l'instanciation d'un objet « pur données », le compilateur n'est pas capable d'en déterminer sa taille et d'allouer juste ce qu'il faut. En d'autres termes, si j'étais en C++, je pourrais faire un truc du genre (pas du tout efficace, mais pour montrer l'idée) :

    // Allocation de tous les membres d'une structure sur le tas.
    size_t total_size = sizeof(int) + MAX*sizeof(wchar_t) + sizeof(Titi);
    void* memory = operator new (total_size);
    wchar_t* str = new((char*)memory+sizeof(int)) wchar_t[MAX];
    Titi* t = new((char*)memory+sizeof(int)+sizeof(wchar_t)*MAX) Titi;
    // ...
    *reinterpret_cast<int*>(memory) = 1;
    *reinterpret_cast<wchar_t*>((char*)memory+sizeof(int))[0] = 'a';
    *reinterpret_cast<Titi*>((char*)memory+sizeof(int)+MAX*sizeof(wchar_t)).someField = ...;