在編譯我的代碼之後,我正在接收一個SEGV信號,這與未經授權的內存訪問有關。鑑於源代碼以及代碼在最近更改之前正在工作。我爲什麼收到這個信號?爲什麼我收到一個SEGV信號(C)?
注:母題的類型的返回解釋
返回字符指針文本字段部件的字符串值。這返回 值是XmNvalue資源的值的副本。如果 TextField控件字符串的長度爲0(零),則返回空字符串。
聲明:
char *str, *str1, *str2;
上初始化:
str2 = XmTextFieldGetString(WIDGET_WITH_STRING);
當前初始化:
str2[0] = "Group Definition";
例外:
(dbx) cont
dbx: warning: Resuming only [email protected] 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";
[email protected] ([email protected]) 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";
'str2 [0]'的類型是char。這項任務毫無意義。 – Mat
我想到了,下面是爲什麼信號:*** str2 **被聲明爲指針字符,我忘記了解引用操作符並創建了一個「指針字符數組」,並試圖爲其指定一個字符串。 – Alan
嗨馬特,是的,我忘記提及我也改變了宣言。令人驚訝的是,我花了數小時試圖解決這個問題,而沒有指出源代碼的dbx。 – Alan