Как передать структуру с матрицей в качестве аргумента pthread? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть следующая структура:

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.

Как я могу заполнить аргументы (row и matrix) struct и передать в качестве параметра функцию, вызванную pthread? Нечто похожее на ...

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

1 Ответ

0 голосов
/ 05 сентября 2018

Когда вы выделяете пространство для структуры, C фактически собирается выделить пространство для целого числа плюс пространство для указателя (что составляет 4 + 8 байт)

Вам нужно выделить место для структуры, а затем выделить для матрицы

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...