2009-03-29 5 views
0

Je ne fais qu'apprendre l'allocation dynamique de la mémoire, mais il y a une chose que j'aimerais bien m'expliquer.C++ Allocation dynamique de la mémoire

Une utilisation pour l'allocation dynamique est pour les tableaux de taille dynamique, et c'est clair pour moi. Une autre utilisation est pour les objets normaux.

Quelle est la situation que l'on devrait utiliser? Est-ce parce que normalement les objets sont poussés sur la pile et peuvent être sautés? Et comment reconnaissez-vous une situation que vous devez utiliser l'allocation de mémoire dynamique?

+0

Remarque DMA == accès direct à la mémoire, pas l'allocation de mémoire dynamique –

+0

ok, merci pour la correction – Ikke

Répondre

7

Un autre problème pour la mémoire dynamique est la durée de vie. La mémoire dynamique (new, malloc, etc ...) vit sur le tas. Il restera en vie jusqu'à ce qu'il soit explicitement supprimé par un morceau de code via la fonction de mémoire appropriée. Ceci est très utile pour les objets à vie longue.

La mémoire non dynamique, ou la pile, a une durée de vie très définie. La mémoire allouée sur la pile ne sera disponible que lorsque cette méthode est en cours d'exécution. Une fois la méthode terminée, la mémoire sera automatiquement récupérée.

+0

Ok, je pense que je comprends. Chaque objet qui devrait «survivre» à la méthode devrait être alloué dynamiquement? – Ikke

0

Il est très courant de ne pas savoir combien d'éléments vous devez traiter - ils peuvent provenir d'un fichier ou autre. Pour stocker des éléments provenant de l'extérieur de votre programme, vous avez besoin de matrices de taille dynamique. PS: Assurez-vous d'utiliser des classes STL comme std :: vector, pas "array".

0

Vous avez besoin d'une allocation dynamique lorsque vous ne savez pas combien d'objets vous allez devoir allouer.

Questions connexes