int
からint32
にOcamlの変換タイプを実行しています。ocamlでタイプintをint32に変更する際のセグメンテーションフォルト(コアダンプ)
./xsd2coq <grammar/cpf.xsd> coq/cpf.v
Segmentation fault (core dumped)
で:私はString
OCamlでのライブラリ私は私のコードは、私はエラーを得た実行したときに、私はint -> int32
から私のコードに多くの場所を変更(以下コード)
external length : string -> int32 = "%string_length"
external create: int32 -> string = "caml_create_string"
external unsafe_blit : string -> int32 -> string -> int32 -> int32 -> unit
= "caml_blit_string" "noalloc"
let sub s ofs len =
if ofs < 0l or len < 0l or add ofs len > length s
then invalid_arg "String.sub"
else begin
let r = create len in
unsafe_blit s ofs r 0l len;
r
end
ノートのいくつかの機能を変更しましたファイルxsd2coq.ml
私はとのバッファを持っているが、次のとおりです。
let main() =
let xml = parse_xml stdin in
let xsds = Xsd_of_xml.xsd_of_xml xml in
let b = Buffer.create 10000 in
Coq_of_xsd.genr_ml b xsds;
Buffer.output_buffer stdout b;;
let _ = run main;;
私はsegmentatioに関するエラーが生じる理由が何であるかを理解したいと思います不具合?私のコードをデバッグするためのヒントや提案をお願いします。ありがとうございました
この質問の今後の読者のメモ:なぜOCaml-Cインターフェイスで 'int'から' int32'に変更するとセグメンテーションフォールトが発生するのか、なぜ 'external'キーワードを使用する準備ができていないのか尋ねる必要がある場合。 –