0

GTK+ は初めてで、プログラムをコンパイルしようとするとセグメンテーション違反エラーが発生します。エラーの原因を次のコード行に切り分けました。

      GtkTextBuffer *buffer; 
      char buffers[65535];
      struct ip  *ip;          
      .
      .
      .
      ip = (struct ip *)buffers;
      gtk_text_buffer_insert_at_cursor (buffer,ip->ip_protocol, -1);

(ip_protocol は struct ip の変数です)

テキストビューのカーソルに、ポインターを使用して「バッファー」にある文字「ip_protocol」の値を挿入しようとしています。残念ながら、この場合はポインターを使用する必要があります。コード?

4

1 に答える 1

1

buffer変数(またはその内容)を初期化することは決してないので、変数buffersを渡すときにその値は未定義ですgtk_text_buffer_insert_at_cursorGtkTextBuffer関数に渡す前に、aを指すようにする必要があります。(コメントによると、省略したコードの部分で変数を初期化するため、この段落は実際のコードには適用されません)。

ip_protocolさらに、変数はであると言いcharましたが、の2番目の引数gtk_text_buffer_insert_at_cursorはポインターである必要があります。したがって、これがセグメンテーション違反を引き起こすのは当然のことです。

于 2012-05-14T09:47:59.517 に答える