Cette question est en C++. J'essaie d'allouer dynamiquement un tableau de pointeurs aux objets. Je sais que je peux utiliser un conteneur vectoriel mais le but de l'exercice est de ne pas ...Allocation dynamique d'un tableau de pointeurs à des objets
Voici le code:
void HealthClub::AddHealthClubDevice (char* HealthClubDeviceName)
{ //We added NumberOfDevices as an attribute, so we won't have to use sizeof all the time
if (NumberOfDevices==0) // This is for the first device we want to add
{
HealthClubDevices = new Device*[1];
HealthClubDevices[0]= new Device(HealthClubDeviceName);
NumberOfDevices++;
}
else // Here we did realloc manually...
{
Device** tempHealthClubDevices;
tempHealthClubDevices = new Device*[++NumberOfDevices]; //this is where we see the first sign of a problem, The tempHealthClubDevices is not allocated properly
for (int i=0 ; i<(NumberOfDevices-1) ; i++)
tempHealthClubDevices[i]=HealthClubDevices[i];
delete[] HealthClubDevices;
HealthClubDevices = tempHealthClubDevices;
HealthClubDevices[NumberOfDevices-1]= new Device(HealthClubDeviceName);
}
}
Le dispositif objets ** ne sont pas attribués correctement, ils ne grandissent jamais en taille, ils sont toujours un élément. Est-ce que quelqu'un sait pourquoi? Merci!
Est-ce que ce problème se produit à chaque fois? Est-il possible que le nouvel opérateur ne puisse pas allouer assez de mémoire? – computergeek6
Cela arrive chaque fois que ce n'est définitivement pas un problème de mémoire. – wazuba
Je ne vois rien de mal avec le code que vous avez posté. Bien que votre commentaire qui dit "a ajouté NumberOfDevices comme attribut, donc nous n'aurons pas à utiliser sizeof tout le temps" est dérangeant. L'opérateur sizeof ne vous donnera pas le nombre de périphériques que vous avez alloués. –