我的代码已经可以工作,但正在尝试扩展它。
unsigned char **data_ptr;
为第一个“数组”分配内存
data_ptr = (unsigned char **)malloc(sizeof(unsigned char **) * no_of_rows);
然后在循环中初始化每一行
data_ptr[index] = (unsigned char *)malloc(sizeof(unsigned char*), rowsize));
然后我将数组的地址传递给库函数。如果我只是通过一行的开头,它就可以正常工作......
LibFunction( info_ptr, &data_ptr[index] ) //OK
但是我需要传递我希望函数开始写入数据的连续位置的地址。这些都编译但运行失败
LibFunction( info_ptr,(unsigned char **)data_ptr[index] + 1);
或者..
LibFunction( info_ptr,(unsigned char **)data_ptr[index][1]);
LibFunction 的形式为
LibFunction(..., unsigned char **)
我分配的内存比我需要的多,所以我不认为我超出了数组。正如我所说,如果我将它传递给一行的开头,则代码可以正常工作,但如果我尝试传递任何其他元素,则会出错。可能还有其他问题,但我需要先知道我的语法是否正常。
关于传递动态二维数组的单个元素的地址,在网上找不到其他任何东西。