私は単純なポインタ/キャストの問題で立ち往生しています:
pthread_create の pthread 関数に引数として 2 つの構造体の配列を渡そうとしています。コードは次のとおりです。
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);
}
何らかの理由で正しく動作しません。プログラムはセグメンテーション違反なしで最後の行を実行できますが、構造体のメンバーにアクセスすると、それらは完全に変更されます