I'm trying to figure out how to create a usable array of pointers to structures.
Essentially, I want to call a function that return a usable array of pointers to structures.
From what I've learned so far, you allocate the structure array by doing a malloc of the structure, multiplied by the number of elements of the array as indicated in the following code:
I'm not sure if this is the correct syntax. I purposely loaded values beyond the array size to see what would happen. The debugger showed the mapping to be successful. But enabling the 'Malloc Guard' option to the debugger flagged this error.
1) Am I correctly creating & loading structures of an array of ptrs, into dynamic memory?
2) Do I return the address (&struct) of the array of structure pointers to the calling program?
Regards,
Ric.
Essentially, I want to call a function that return a usable array of pointers to structures.
From what I've learned so far, you allocate the structure array by doing a malloc of the structure, multiplied by the number of elements of the array as indicated in the following code:
C:
typedef struct {
char* name; /* '\0'-terminated C string */
int number;
} myStructure;
void *myFunction(int n);
int main() {
int n = 5;
myStructure *myData[n] = myFunction(n); // ...correct?
// ....
free(myData);
} // main()
// ------------------------------------------------------------------------------------
void *myFunction(int n) {
// I want to reserves space for n 'myStructures' via the following syntax.
// Shouldn't use [] in declaration; hence the 'n' counter in the sizeof().
myStructure *ricData = (myStructure *)malloc(sizeof(myStructure)*n);
// This works:
ricData->number = 123;
ricData->name = "Ric Lee\0";
// This also works:
printf("\nricData[0].name= %s",ricData[0].name);
// Load value into [1]:
ricData[1].number = 345;
ricData[1].name = "Richard D. Brauer\0";
// This also works:
printf("\nricData[1].name= %s\n",ricData[1].name);
// What happens when I load BEYOND 5 elements?
ricData[7].number = 777;
ricData[7].name = "Mydle Oogalbee";
printf("\nricData[7].name= %s",ricData[7].name); // Debugger sees it.
return &ricData; // Is this correct: addr to array of pointers to structures?
} // end myFunction().
I'm not sure if this is the correct syntax. I purposely loaded values beyond the array size to see what would happen. The debugger showed the mapping to be successful. But enabling the 'Malloc Guard' option to the debugger flagged this error.
1) Am I correctly creating & loading structures of an array of ptrs, into dynamic memory?
2) Do I return the address (&struct) of the array of structure pointers to the calling program?
Regards,
Ric.