我有一个3d的char指针数组:char ***semicols
我希望这些价值观能够与

semicol[0][0] = "ls"
semicol[0][1] = "~"
semicol[1][0] = "man"
semicol[1][1] = "grep"


等等。我在其中存储了一个char **args数组,并且我也知道该数组中的分号数。我要创建具有上述结构的较小的char** ARGS,因此要创建semicol[0] = {"ls", "~"}
但是我事先不知道每个分号参数的字符串数,因此无法将其设置为静态char *semicols[][]。那么,如何合理地为3d数组进行malloc分配,或者有更好的方法来执行我尝试做的事情?

最佳答案

您不需要3D的字符指针数组,但是需要2D的字符指针数组。

Best way to allocate memory to a two-dimensional array in C?,您可以分配如下所示的二维字符指针数组。

char* (*semicol) [col] = malloc(sizeof(char* [row][col]));


要么

char* (*semicol) [col] = malloc(sizeof(*semicol) * row);  //avoids some size miscomputations, especially when the destination type is later changed. //Refer chqrlie's comment.


成功分配内存后,您可以执行semicol[i][j] = "text";

您可以通过调用free(semicol);释放分配的内存

10-07 14:15