Delete copy de pointeur

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 - 15 mars 2005 à 10:46
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 15 mars 2005 à 11:18
Salut,

J'ai une erreur lors de la libération de mémoire vive:
Un exemple vaut bien mieux q'un long discours:

BYTE* pByte = new BYTE[n];
BYTE* pByteCopy = pByte;
delete pByteCopy;

Il y a une erreur Windows lors de l'execution de la troisième ligne... pourquoi ?
L'erreur n'a lieu que pour des valeurs de n "grandes" (quelques ko).

J'utilise une telle méthode pour faire du redimensionnement de tableau. Pour ne pas avoir à créer de tableau temporaire, j'échange des pointeurs de tableaux.

ex:
pByte doit être redimensionné ++12.

BYTE* pByteCopy = new BYTE[n+12];
memcpy(pByteCopy, pByte, n); // garder les anciennes données
delete pByte;
pByte = pByteCopy;

Cette routine pose apparement des problèmes. Lesquels sont-ils ?
Merci

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 mars 2005 à 11:18
delete [] ptr; // quand est un tableau.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous