Tengo dos clases de la siguiente forma (aproximado) y el programa principal
/*Clase tnodo*/
//archivo tnodo.h
class Tnodo{
private:
char *cad;
int id;
/*demas atributos...*/
public:
Tnodo();
~Tnodo();
void Init(int l)
/* demas metodos....*/
}
//archivo tnodo.cpp
#include "tnodo.h"
Tnodo::Tnodo(){
id=0;
}
Tnodo::~Tnodo(){
delete [] cad;
}
void Tnodo::Init(int l){
cad=new char[l];
}
/*clase Testructura*/
//archivo testructura.h
#include "tnodo.h"
class Testructura{
private:
Tnodo *arreglo1;
Tnodo *arreglo2;
int id;
int number;
int length;
/*demas atributos...*/
public:
Testructura();
~Testructura();
void Init(int n, int l);
void Terminate();
void Copy();
/* demas metodos....*/
}
//archivo testructura.cpp
#include "testructura.h"
Testructura::Testructura(){
id=0;
}
Testructura::~Testructura(){
//....
}
void Testructura::Init(int n, int l){
int i;
number=n;
length=l;
//inicializa arreglo1
arreglo1=new Tnodo[number];
for (i=0; i<n; i++)
arreglo1[i].Init(length);
//inicializa arreglo2
arreglo2=new Tnodo[number];
for (i=0; i<n; i++)
arreglo2[i].Init(length);
}
void Testructura::Terminate(){
delete [] Tnodo;
}
void Testructura::Copy(){
//copia arreglo1 sobre arreglo2
bcopy((Tnodo *) arreglo1, (Tnodo *) arreglo2, (int) (sizeof(Tnodo) * number));
}
/*programa principal*/
#include "testructura.h"
int main(int argc, char *argv[]){
bool flag;
Testructura lista;
do{
//leer parametros de la lista n y l
lista.Init(n,l);
//demas operaciones
lista.Copy();
lista.Terminate();
//modificar condicion de terminacion de bucle
} while (!flag)
return 0;
} //fin
El problema que tengo es cuando se ejecuta lista.Copy(); en la segunda iteracion, el programase queda colgado. Es correcta la forma de asignar y liberar memoria?.
Los compiladores que utilizo son g++ y mpicxx (para aplicaciones paralelas)
Gracias por vuestra ayuda