時間の経過とともに大きくなる (さらにミューテックスを追加する) pthread_mutex の動的な malloced 配列を構築したいと考えています。私の質問は、配列が realloc() で移動された場合でも機能するかどうかです。私の懸念は、 pthread_mutex_init() が、その時点でのミューテックスのアドレスに依存する内部情報を何らかの方法でセットアップする可能性があることです。
具体的には、問題を示すおもちゃのスニペットを次に示します。
pthread_mutex_t *my_mutexes = (pthread_mutex_t *) malloc (sizeof(pthread_mutex_t));
pthread_mutex_init (my_mutexes, NULL);
my_mutexes = (pthread_mutex_t *) realloc (my_mutexes, 2*sizeof(pthread_mutex_t));
/* does my_mutexes[0] still work at this point? */
そのような場合の答えはすべて、「明示的に許可されていない場合は、許可されていないと仮定する」であると思いますが、ここで賢明なアドバイスを得たいと思いました. 結論がこれを行うことではない場合、一般に、増加するミューテックスのリストをどのように作成するのか疑問に思います。