i ont la structure suivante:la suppression d'un tableau de pointeur sur struct
struct Message {
Agent *_agent;
double _val;
};
et le réseau REE suivant:
typedef Message* MessageP;
MessageP *_msgArr;
_msgArr = new MessageP[MAX_MESSAGES];
ceci est la méthode qui insère un message à la matrice:
void Timing::AddMessage(Agent * const agentPtr, double val) {
MessageP msgPtr = new Message;
assert(msgPtr != 0);
//assign values:
(*msgPtr)._agent = agentPtr;
(*msgPtr)._val = val;
//add to messages array:
assert(_msgArr != 0 && _waitingMsgs<MAX_MESSAGES);
_msgArr[_waitingMsgs] = msgPtr;
_waitingMsgs++;
}
Ma question concerne la suppression de ce tableau. Je voudrais supprimer le tableau et toutes les structures allouées. si j'écris:
delete [] _msgArr
ce sera également supprimer chaque struct alloué ou libérera que la mémoire allouée pour le tableau?
est la bonne façon est d'aller sur l'ensemble du réseau avec une boucle et écrire
delete _msgArr[i]
et enfin Wite supprimer [] _msgArr pour supprimer le tableau alloué ?
merci!
Avez-vous envisagé d'utiliser l'un des conteneurs de bibliothèque standard comme 'std :: vector' ou' std :: deque'? –
Je suis en train de suivre un cours en C++, nous n'avons pas encore atteint ce matériel donc il n'est pas permis d'utiliser le vecteur .. –
James a un point - les tableaux standard sont très utiles (et souvent plus efficace en ressources, si un peu plus lent parfois) - mais selon la réponse ci-dessous, vous devez toujours supprimer les objets pointés dans les conteneurs std. – Ragster