我有一個結構被傳遞作爲一個void *指針將結構作爲指針傳遞,導致數組損壞?
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。這很奇怪。
很難幫助這麼少的信息。你能發表一個有效的例子,說明問題嗎? – sleske 2011-02-13 23:59:02
對不起,做了編輯 – nubela 2011-02-14 00:08:13
這些操作是在同一個線程中嗎? – Abhi 2011-02-14 00:30:35