У меня есть структура, передаваемая в качестве пустого * указателя
void *find_queens(void *args) {
Я попытался превратить этот указатель в пригодную для использования структуру, используя
struct queens_arg *data = (struct queens_arg *) args;
Тем не менее, массив, который хранится в этом
struct queens_arg {
int board[64];
int focus_idx;
};
вызываемая плата сейчас повреждена и не отражает исходные значения, кто-нибудь знает почему? Спасибо!
Больше информации здесь:
Это начало функции:
void *find_queens(void *args) {
//vars
pthread_t thread1, thread2;
struct queens_arg *data = (struct queens_arg *) args;
int board[64];
copy_array(data->board, board);
print_board(data->board);
Вот как это называется:
int board[64] = {
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
};
struct queens_arg *args = malloc(sizeof (struct queens_arg));
args->focus_idx = 0;
copy_array(board,args->board);
(*find_queens)(&args);
Когда я печатаю массив, я получаю это вместо:
39456784 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Вместо 0 полностью. Что странно.