Bonjour,
j'aimerais savoir ce qui se passe lorsqu'on a un pointeur (disons int*ptr) et que l'on fait
ptr = new int[0];?
Je m'attendais a priori à ce que ptr soit égal à NULL mais après vérification ce n'est pas le cas.
Merci!
Version imprimable
Bonjour,
j'aimerais savoir ce qui se passe lorsqu'on a un pointeur (disons int*ptr) et que l'on fait
ptr = new int[0];?
Je m'attendais a priori à ce que ptr soit égal à NULL mais après vérification ce n'est pas le cas.
Merci!
Ca t'alloue un tableau avec 0 élément. Et si c'est négative le comportement n'est pas définie.
Un tableau de 0 éléments???
Et vers quelle adresse pointe ptr alors?
Je me pose la même question.Citation:
et le delete ne pose pas problème ?
J'ai testé delete[] ptr après ptr=new int[0] et je n'ai d'erreur ni à la compilation ni à l'exécution. Après, est-ce que le boulot a bien été fait...
Salut,
Comme l'a dit 3DArchi, L'adresse est valide, dans le sens où elle t'a été réservée par l'OS, et ce, même si elle est de taille nulle
Le delete [] correspondant aura donc le résultat escompté ;)
Par contre, le déréférencement ou l'arithmétique de pointeurs basée sur cette adresse enverra ton programme dans les choux :aie:
Il est trop fort 3DArchi! ^^Citation:
Comme l'a dit 3DArchi, L'adresse est valide, dans le sens où elle t'a été réservée par l'OS, et ce, même si elle est de taille nulle
Le delete [] correspondant aura donc le résultat escompté
La bonne nouvelle c'est que je n'ai plus à gérer le cas dans mes constructeurs de tableaux. :)