警告: これは C の回答です。あなたの答えは私には正しいように見えますが、より良いアプローチは次のようなものです:
#define BUFFER_DIM_1 4
#define BUFFER_DIM_2 50
int i;
char **buffer;
/* Create an array of pointers to the lower level */
buffer = malloc(BUFFER_DIM_1 * sizeof(char *));
for (i=0; i<BUFFER_DIM_1; i++) {
buffer[i] = malloc(BUFFER_DIM_2 * sizeof(char));
}
その後、提案どおりに使用できます。
勇敢な方は、malloc を 2 つだけ使用して、より巧妙なポインターを使用することもできます。
#define BUFFER_DIM_1 4
#define BUFFER_DIM_2 50
int i;
char **buffer;
/* Create an array of pointers to the lower level */
buffer = malloc(BUFFER_DIM_1 * sizeof(char *));
buffer[0] = malloc(BUFFER_DUM_1 * BUFFER_DIM_2 * sizeof(char));
for (i=1; i<BUFFER_DIM_1; i++) {
buffer[i] = buffer[i-1] + BUFFER_DIM_2 * sizeof(char);
}
最後に、必要がなくなったら、このメモリをすべて解放することを忘れないでください。