9
votes

Un tableau peut-il être trop grand?

Actuellement, j'ai un TCube CODE> TCURE

CreateCube : array[1..1000] of tcube;


2 commentaires

Pas un problème à moins que vous n'ayez pas assez de mémoire


Donc, dans ce cas, les 1000 cubes sont fabriqués au moment de l'exécution, alors quand je les crée, c'est qu'il utilise plus de mémoire? Ou en définissant le tableau, tout est prêt à créer le cube et je suis juste en train de modifier la mémoire lorsque je fais Createcube [i]: = tcube.create (auto-);


3 Réponses :


16
votes

Il existe deux scénarios principaux où de grandes matrices sont problématiques:

  1. Le tableau est si important qu'il ne s'intègre pas dans un bloc de mémoire contigu. Si le tableau contient des références plutôt que des valeurs, vous pouvez avoir suffisamment de mémoire pour le tableau, mais une mémoire insuffisante pour les objets qui sont mentionnés.
  2. Le tableau est déclaré comme une variable locale et conduit à un débordement de la pile. La façon dont vous évitez que le problème soit de déplacer le tableau sur le tas. Dans Delphi, le moyen le plus propre de le faire est de rendre la matrice un tableau dynamique. Même si vous connaissez les dimensions au moment de la compilation, vous pouvez utiliser une matrice dynamique pour déplacer le stockage de la pile et sur le tas.

0 commentaires

5
votes

Un tableau peut être aussi important que la mémoire le permet. Mais si c'est une variable locale, ou si vous le transmettez par valeur à une méthode, vous pouvez facilement sortir de la pile.


0 commentaires

2
votes

Choisir la bonne structure de données est quelque chose que je ne peux que vous conseiller sur. Une grande partie dépendra de la capacité de remplissage de la matrice. Un tableau rares pourrait bien fonctionner si le tableau est grand mais peuplé légèrement.

Personnellement, je voudrais coder une classe de liste personnalisée pour contenir des instances TCube. Cela présente plusieurs avantages sur un tableau. Premièrement, cela consommera de la mémoire de manière dynamique. Deuxièmement, vous pouvez ajouter des méthodes supplémentaires à cette classe en fonction de vos applications.


0 commentaires