質問: (ThreadParameter *)__arg; //スレッド引数構造体 ``` というふうに同じThreadParameter型の変数threadParamで、 (ThreadParameter *)__arg、つまり(2)に書いている関数pthread_createの第4引数である(void *)threadParamを受け取ろうとすると、 ``` Segmentation fault: 11 ``` とエラーが返ってきてしまいます。 同じ型なので問題ないように感じるのですが、何がいけないのでしょうか? できれば、加えてその対策も教えていただければ幸いです。
回答: こんにちは。 `Segmentation fault`は型間違いではありません。不正メモリ・アクセスです。 多くの場合、初期化していないポインタやNULLポインタの指すメモリをアクセスしようとした時に発生します。 各関数に渡しているポインタに初期化漏れ等がないか確認して見てください。 【余談ですが】 > > Mac OS X El Capitan、gcc バージョン4.2.1の環境 > > > 恐らくお使いのコンパイラはgccではなくclang/LLVMです。 gccの4.2.1は非常に古いバージョン(2007年リリース)なのです。 そして、clang/LLVMで-dumpversionすると4.2.1と表示されるようです。 clang/LLVMは主にappleとgoogleが開発しているC++コンパイラです。