Tas vs allocation de Pile

Je suis un peu confus sur le sujet de l'allocation des objets sur le tas vs l'allocation sur la pile, et quand et comment les supprimer() doit être appelée.

Par exemple, j'ai de la classe Vector. Je voudrais faire un tableau de ces.

Je pouvais soit faire

Vector** v = new Vector*[100]; //create an array of 100 pointers to 100 Vector objects

Ce que je comprends serait d'allouer tout (enfin sauf pointeur d'adresses) sur un tas de?
Donc, pour libérer de la mémoire j'aurais besoin de:

for (int i = 0; i < 100; ++i)
{
   delete(v[i]);
}
delete(v);

OU tout simplement

delete(v);

est-elle suffisante?

Maintenant un autre exemple:

Vector* v = Vector[100];

Ce qui se passe dans ce cas? D'où vient l'allocation de se produire? Tas ou de la pile?
Dois-je toujours besoin d'appeler

delete(v);

Mais ce n'est pas une question, désolé pour le long post..

exemple:

class Vector
{
  int x, y, z;
}

Vector* v = new Vector();

wheres x, y, z alloué? Tas ou pile?

ou comment à ce sujet:

class Vector2
{
   int items[10];
}

Vector2* v2 = new Vector2();

où sont les articles[10] alloué?
Comment puis-je supprimer la v2? Ai-je besoin personnalisé destructeur?

Aussi le dernier mais non le moins, comment à ce sujet:

class Vector3
{
   int* items;
}

Vector3 v3 = Vector3();

Où les éléments pointeur stocké? tas ou de la pile? Comment puis-je supprimer?

Merci et désolé pour la longue question. J'ai de la difficulté avec ce genre de choses depuis longtemps et ne pourrais pas vraiment trouver aucune explication complète sur la ligne.

Oublier de new/delete vous n'avez pas besoin d'eux. Il suffit d'utiliser un std::vector
désolé mec, c'était juste un exemple de classe que j'ai donné à comprendre l'allocation de la mémoire. Cela n'a rien à voir avec une réelle application. Je pourrais ainsi appelé MyClass. + même si c'était std::Vector, c'est autre chose, ne pas confondre les noms!
Il n'a rien à voir avec le nom de. Il est plus à voir avec l'utilisation de new X[]. Dans la plupart des situations que vous faites cela, vous devriez être en utilisant std::vector<X>

OriginalL'auteur Mikhail Naumov | 2011-07-15