如何传递带有矩阵作为pthread参数的结构?

时间:2018-09-05 01:16:57

标签: c pthreads

我具有以下结构:

typedef struct {
  int row;
  int** matrix;
} values ;

要填充结构矩阵,我尝试了以下代码:

values **v = (values **)malloc(x * sizeof(values *));
for (int z = 0; z < y; ++z)
     [z] = (values *)malloc(y * sizeof(values));

其中x是行数和y列数。

如何填充struct的参数(rowmatrix)并将其作为参数传递给pthread调用的函数? 类似于...

pthread_create(&thread1, NULL, somaLinha, v);

1 个答案:

答案 0 :(得分:2)

当您为结构分配空间时,C实际上将为整数分配空间,再为指针分配空间(4 + 8字节)

您需要为结构分配空间,然后allocate for the matrix

values *v = (values *) malloc(sizeof(values));
v->matrix = (int **) malloc(y * sizeof(int *));
for (int z = 0; z < y; ++z)
    v->matrix[z] = (int *) malloc(y * sizeof(int));

然后创建线程

pthread_create(&thread1, NULL, somaLinha, v);