我正在尝试将2d数组传递给pthread函数,但是我找不到在pthread进程中访问数组内容的方法,我该怎么办呢? 我试过了
int ** array = (int **)arg;
但是在我尝试更改存储值后它导致了段错误; 这是我的代码的一部分:
int message1[2][64];
int i = 0;
for (; i < 2; i++)
{
int j = 0;
for (; j < 64; j++)
{
message[i][j] = 1;
}
}
pthread_t tid[1];
pthread_create(&tid[0], NULL, xD, message);
功能:
void * xD(void * arg)
{
int ** array = (int **)arg;
array[0][0] = 2;
}
答案 0 :(得分:4)
找不到合适的副本。 int **
不是2D数组,而是指向int的指针。
您要传递的内容is a pointer to an array[64] of int
,即int (*array)[64]
。
尝试
int (*array)[64] = arg;