Estoy editando un código, que es parte de un proyecto grande, que usa "const" para inicializar un conjunto de matrices. Como quiero parametrizar estos const, tengo que adaptar el código para usar "malloc" para asignar la memoria. Desafortunadamente hay un problema con las estructuras: no puedo asignar memoria dinámica en la estructura misma. Hacerlo afuera causaría mucha modificación del código original.Memoria dinámica dentro de una estructura
Aquí hay un pequeño ejemplo:
int globalx,globaly;
struct bigStruct{
struct subStruct{
double info1;
double info2;
bool valid;
};
double data;
//subStruct bar[globalx][globaly];
subStruct ** bar=(subStruct**)malloc(globalx*sizeof(subStruct*));
for(int i=0;i<globalx;i++)
bar[i]=(*subStruct)malloc(globaly*sizeof(subStruct));
};
int main(){
globalx=2;
globaly=3;
bigStruct foo;
for(int i=0;i<globalx;i++)
for(int j=0;j<globaly;j++){
foo.bar[i][j].info1=i+j;
foo.bar[i][j].info2=i*j;
foo.bar[i][j].valid=(i==j);
}
return 0;
}
Nota: en el código del programa estoy editando globalx y globaly eran de const en un espacio de nombres especificado. Ahora eliminé el "const" para que puedan actuar como parámetros que se establecen exactamente una vez.
Resumido: ¿Cómo puedo asignar correctamente la memoria para el substruct dentro de la estructura? ¡Muchas gracias!
Max
¿Estás seguro de que esto es 'C++' y no 'c'? –
** No ** utilice 'malloc' o' free' en los objetos. El constructor y el destructor no serán llamados. Use 'new' y' delete' – Yacoby
Eso es lo que se llama mal estilo C++. Niños, nunca lo hagan –