I am making a C function to integrate into Python that basically creates a two-dimensional array of chars (each row has constant, known length), reads some data into it, builds a numpy array from it, and returns it to the calling function in Python. I’m not an expert with C, but I believe that in order to preserve the array in memory after exiting the function where it was created, I need to allocate it on the heap with malloc. So I am trying this line:
//rowSize and interleaved are both integers; bytesPerTable is equal to rowSize * interleaved
char arrs[interleaved][rowSize] = (char **)malloc(bytesPerTable * sizeof(char));
Which gives me the compiler error
error: variable-sized object may not be initialized
I’m not sure how to make this work. I want to allocate a block of memory that is the size I need (bytesPerTable) and then organize it into the required two-dimensional array. If I simply declare
char arrs[interleaved][rowSize];
Then it works, but it’s on the stack rather than the heap. Can anyone help?
Do it like this
arrays can’t be assigned to, pointers and arrays are really different kinds of objects.
Also:
sizeof(char)is1by definition