J'essaie d'allouer dynamiquement un grand tableau dans Ada (bien, un tableau d'un tableau). Par exemple, je suis en mesure d'allouer dynamiquement un objet comme ceci:Allocation de tableau dynamique d'un enregistrement dans Ada
type Object;
type ObjPtr is access Object;
OP : ObjPtr;
-- sometime later
OP := new Object;
OP.Index := I;--OP.Ptr.all;
Free(OP);
J'essaie d'imiter ce code de référence:
Object **objList = new Object*[500000];
int32_t *iList = new int32_t[500000];
for (int32_t i = 0; i < 500000; ++i)
{
objList[i] = new Object;
iList[i] = Object::getIndex(objList[i]);
delete objList[i];
}
delete[] iList;
delete[] objList;
Malheureusement, je suis incapable de le faire même quelque chose comme cela C++ équivalent:
Object *objList = new Object*[500000];
je suis venu avec autant jusqu'à présent:
type objs is array (Positive range <>) of Object;
type objList is access objs;
Mais je suis probablement loin.
Où se trouve le tableau d'un tableau? – Schedler
De quel "benchmark" parlons-nous? Schedler montre une façon de le faire, mais vous n'avez pratiquement jamais besoin de faire quelque chose comme ça dans Ada (et vous devriez vraiment l'éviter en C++). De plus, le 'new' d'Ada est probablement implémenté comme un appel à la même routine d'OS que celle utilisée par C++. Ainsi, le benchmarking de ses performances d'allocation dynamique est à la fois inutile et stupide. –