Tengo un puntero que apunta a un array de punteros.
Este array puede ir creciendo y para añadir un nuevo elemento creo un nuevo puntero a array de punteros con un tamaño superior en una unidad.
Mi duda es si al copiar los valores del viejo array de punteros debo eliminar el contenido de cada posición despues de copiar el valor al nuevo array.
No se si me he explicado bien... igual con el codigo se entiende a que me refiero
Código:
class protocolo
{
unsigned char packetSize;
unsigned char* packetNumber;
unsigned char** data;
void addData( int data )
{ int packet_number = this->getPacketNumber() + 1;
this->setPacketNumber( packet_number );
//Hay que redimensionar el array en una posición
unsigned char** temp; //Puntero a un array de punteros
temp = new unsigned char*[ packet_number ]; //Array de punteros con PACKET_NUMBER posiciones
//Copiamos el array
for( int i=0; i< (packet_number-1); i++ )
{
temp[i] = this->data[i]; //Copiamos el valor o la referencia??
delete this->data[i]; //Y me cargo el viejo DEBO ELIMINARLO??
}
delete [] this->data; //Liberamos la memoria usada por this.data
this->data = temp; //this.data apunta al nuevo array de datos
//ahora hay que añadir el nuevo dato
//Cada posicion de this->data es otro array de chars de longitud (int)packetSize
int tamanyo = (int)this->packetSize;
unsigned char* nuevo_dato = new unsigned char[ tamanyo ]; //Reservamos memoria para el nuevo campo
cout << "Posicion de memoria del nuevo dato:" << (int)nuevo_dato << "\n";
nuevo_dato = this->splitInt( data, tamanyo ); //Copiamos el DATA a el nuevo_dato
this->data[ (tamanyo-1) ]; //Hacemos que la ultima posicion apunte al nuevo_dato
}
}
De hecho si hago el delete this->data[i] el programa sigue funcioando correctamente, asi que supongo que en la linea anterior ( temp[i] = this->data[i]; ) lo que está realizando es una copia por lo tanto si que debería eliminar this->data[i] pero no acabo de ver el porque: no estoy copiando la dirección de memoria?
PD:No, si hago el delete this->data[i] el programa no funciona correctamente... el ultimo valor introducido machaca al que le precede por lo que supongo que estoy copiando la dirección de memoria.