Bonjour à tous,
Je me pose quelques questions à propos de variables et objets dynamiques (une partie de ces questions aurait peut-être du être posée dans le forum de développement Windows?!)
1) Quand je crée un objet dynamique avec un new, j'enregistre logiquement l'adresse retournée dans un pointeur. Imaginons que je copie cette adresse dans un autre pointeur, si je fais un delete en utilisant cet autre pointeur, supprimerais-je bien la totalité de la mémoire allouée (imaginons que j'ai fais un casting et que ce ne soit pas des pointeurs vers le même type de variable)?
2) (En rapport avec la 1) Lorsque je fais un new, y-a-t-il création d'une sorte de tableau de références où sont enregistrées pour chaque adresse allouée la taille de la zone allouée? (Dont le delete se servirait pour connaître la taille à désallouer)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int* c = new int; long* d = (long*)c; delete d;
3) Que se passe-t-il si je fais un delete à une adresse qui n'a pas été allouée dynamiquement?
3bis) Que se passe-t-il si j'ai alloué un tableau (de 10 éléments par exemple) et que je fais un delete[] mais comme ceci4) Si j'alloue un tableau dynamique, et que plutot de faire un delete[], je fais simplement delete, que vais-je supprimer? Seulement le premier élément de ce tableau?
Code : Sélectionner tout - Visualiser dans une fenêtre à part delete[] &tab[1];
5) Si j'oublie de désallouer une zone de mémoire allouée dynamiquement, lorsque le programme se termine, la zone de mémoire sera automatiquement supprimée par l'OS (Windows pour ma part)?
Merci d'avance,
Crisanar
Partager