我被困在一個簡單的指針鑄造問題傳遞結構的數組:C,鑄造通過/空指針
我嘗試通過作爲參數傳遞給並行線程功能中的2層結構在pthread_create的陣列。下面是代碼:
struct sockaddr_in addr_left, addr_right;
struct sockaddr_in* addr_vec [2] = {&addr_left, &addr_right};
pthread_create (&thread_forward, NULL, thread_func_forward, (struct sockaddr**)addr_vec);
內thread_func_forward:
void * thread_func_forward (void * argv) {
struct sockaddr_in* addr_left = ((struct sockaddr_in*)argv + 0);
struct sockaddr_in* addr_right = ((struct sockaddr_in*)argv + 1);
}
出於某種原因,不能正常工作,該程序可以執行最後一個行不分段錯誤,但是當我訪問的成員結構完全改變
我想'addr_left','addr_right'和數組是函數的局部變量,它們在堆棧上。當你返回形式這個函數時,這些堆棧變量不見了/ garbaged。 –
你有沒有嘗試一次正常的函數調用,而不是線程?它工作正常嗎? – VoidPointer