0

コードをコンパイルした後、状況に応じて、メモリの不正アクセスに関連する SEGV 信号を受信して​​います。ソースと、最近の変更前にコードが機能していたことを考えると。この信号を受信して​​いるのはなぜですか?

注: Motif の型戻りの説明

TextField ウィジェットの文字列値への文字ポインタを返します。この戻り値は、XmNvalue リソースの値のコピーです。TextField ウィジェットの文字列の長さが 0 (ゼロ) の場合、空の文字列を返します。

宣言:

char *str, *str1, *str2;

以前の初期化:

str2 = XmTextFieldGetString( WIDGET_WITH_STRING ); 

現在の初期化:

str2[0] = "Group Definition";

例外:

(dbx) cont      
dbx: warning: Resuming only t@1 to satisfy events that require
automatic single-stepping

trace:    814     if (!add_button_sensitive)
trace:    817     str = XmTextFieldGetString( region_code_text );
trace:    818     str1 = XmTextFieldGetString( region_name_text );
trace:    823     str2[0] = "Group Definition";
t@1 (l@1) signal SEGV (access to address exceeded protections) in      
region_add_mod_cb at line 823 in file "region_groups.c"
  823     str2[0] = "Group Definition";
4

2 に答える 2

1

str2 が char *str2; として宣言されている場合。あなただけが必要です: str2 = "グループ定義"

于 2015-06-03T21:13:25.793 に答える