I have some code to create a new struct and allocate some space for an array of structs. Initially, I allocate space for 1 struct on the array:
static int datasetCount = 0;
int datasetgroup_new(DatasetGroup *dg char *id){
dg->id = id;
// Allocate space for a single dataset to start with
dg->datasets = (Dataset *) malloc(sizeof(Dataset));
return 0;
}
I then have a function to add another struct ('dataset') to the struct containing the array. At the end of the function, I reallocate the array to provide another space:
void datasetgroup_add(DatasetGroup *dg, string filePath){
// Create the dataset
Dataset ds;
dataset_new(&ds, filePath);
// Copy the dataset to the dataset array
dg->datasets[datasetCount] = ds;
// Increment the dataset counter
datasetCount++;
//Grow the array
dg->datasets = (Dataset *)realloc(dg->datasets, sizeof(Dataset) * (datasetCount + 1));
}
I keeping reading things that hint that in modern C you don't need to do stuff like this. I may be wrong...so is the a more modern/correct way to do this?
Edit:
Sorry, to be clear that I am not using C++ types, I have created a typedef for string
:
typedef char* string;