64 ビット・モードでは、ポインターと int 型のサイズが同じではなくなりました。これによって、次のような影響が出ます。
32 ビット・モードでは、以下のようなコード構文は、
a=(char*) calloc(25);
calloc に対する関数プロトタイプがなくても有効ですが、コンパイラーは、この関数が int を戻すものと想定するので、a は自動的に切り捨てられ、その後、符号拡張されます。calloc がメモリー内で割り振ったアドレスは、戻されるときに既に切り捨てられているため、結果をキャストする型は、切り捨てを免れることはできません。この例での適切な解決策は、calloc のプロトタイプを含む、該当するヘッダー・ファイル stdlib.h を組み込むことです。
上記のような問題を回避するためには、次のようにします。