go1.6 はまだβなので以下の回避方法も変わる可能性があります。(おそらくそのままだと思いますが) そのため、下記の点を注意する必要があります cgoの関数の引数経由以外の方法でGoポインタをCに渡した場合は、そのGoポインタが指すメモリは保護されない cgoの関数から返ってくると保護されていたGoポインタの保護も外れるため、cgoの関数内でGoポインタをどこかに保存して次に呼ばれたcgoの関数内で再利用とかはできない GoポインタへのGoポインタをcgoの関数に渡すのは基本ダメ 保護されるのは引数で渡されたGoポインタが指す先のみで、その指す先の更に指す先は保護されない go1.6beta2では、cgo関数呼び出し時のチェックに引っかかってcgo argument has Go pointer to Go pointerというエラーメッセージが表示される Cで確保されたメモリへのポイン