Here's the answer to the question I think you're asking:
/**
* Allocate the struct.
*/
struct thread_data *td = malloc(sizeof *td);
/**
* Compute the number of elements in td->incall (assuming you don't
* want to just hardcode 10 in the following loop)
*/
size_t elements = sizeof td->incall / sizeof td->incall[0];
/**
* Allocate each member of the incall array
*/
for (i = 0; i < elements; i++)
{
td->incall[i] = malloc(HOWEVER_BIG_THIS_NEEDS_TO_BE);
}
Now you can assign strings to td->incall
like so:
strcpy(td->incall[0], "First string");
strcpy(td->incall[1], "Second string");
Ideally, you want to check the result of each malloc
to make sure it was successful before moving on to the next thing.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…