[英]C strchr works with NULL value on HPUX but segfaults on RHEL
[英]Simple C code works fine on HPUX but segfaults on Linux. Why?
我很久很久沒有做過任何嚴肅的 C 並且希望得到快速的解釋。 以下代碼在 HP/UX 上編譯並運行良好。 It compiles without any warning on GCC 4.3.2 in Ubuntu (even with gcc -Wall), but segfaults when run on Linux.
誰能解釋為什么?
#include <stdio.h>
int main() {
char *people[] = { "Abigail", "Bob" };
printf("First: '%s'\n", people[0]);
printf("Second: '%s'\n", people[1]);
/* this segfaults on Linux but works OK on HP/UX */
people[1][0] = 'R';
printf("First: '%s'\n",people[0]);
return(0);
}
你的 people 數組實際上是一個char const *people[]
。 在許多系統上,文字字符串通常位於只讀 memory 中。 你不能給他們寫信。 顯然,在 HP/UX 上並非如此。
字符串文字位於只讀數據段中。 嘗試寫入它們是違反分段的。
您不能修改字符串文字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.