0 votes

C++ : Que signifie "nouveau" une collection qui va continuer à croître ?

Je suis novice en C++. Que signifie exactement "nouveau" pour une collection ? Par exemple :

UnicodeStringList* tmp = new UnicodeStringList;
// where UnicodeStringList is typedef to std::list<UnicodeString>

Lorsque vous "créez" quelque chose, vous devez savoir exactement quelle taille il vous faut, n'est-ce pas ? Donc quand je utilise le constructeur d'affectation pour copier un objet, comment l'ordinateur saura-t-il quelle quantité de mémoire doit être allouée sur le tas ? Par exemple :

*tmp = another_string_list;

Une autre_string_list est copiée dans ma nouvelle UnicodeStringList dans la mémoire du tas, mais je n'ai jamais spécifié initialement la taille de cette mémoire du tas. Et le compilateur ne sait pas quelle est la taille d'une autre_string_list, donc combien de mémoire va dans le tas ?

Je suis confus et j'espère avoir suffisamment précisé ma question pour que quelqu'un puisse me comprendre, mais je ne suis pas sûr.

Veuillez m'aider

Merci,

Julian

0voto

corsiKa Points 39442

Tu devrais peut-être chercher ce que fait New. Il le place sur le tas de mémoire au lieu de la pile. De cette façon, il ne disparaîtra pas lorsque vous perdrez la portée. Cela n'a rien à voir avec la taille connue. Vous confondez peut-être cela avec les tableaux, où lorsque vous allouez la mémoire d'un tableau, vous devez connaître la taille, et vous la remplacez généralement par new.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X