先日、久しぶりにLinux上でC言語を使ってプログラムを作ることになった。普段は、Windows上でVisual Studioを使って作るし、C言語よりもC++を使うことが多いので、くだらないところで30分ほど悩んでしまった。 問題となったのは、gccでコンパイルすると以下のような警告が出て、実行するとセグメントエラーが表示されてしまうというものだった。 warning: cast to pointer from integer of different size 警告が出ている箇所を見てみると、mallocでメモリを確保している部分だった。 buffer *b = (buffer*)malloc(sizeof(buffer)); ちなみに、bufferは構造体をtypedefしたもの。 typedef struct _buffer buffer; ここで「integerからpointer