警告:这是一个 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 和一些更聪明的指针工作:
#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);
}
最后,不要忘记在不再需要时释放所有这些内存。