簡體   English   中英

簡單的 C 代碼在 HPUX 上工作正常,但在 Linux 上會出現段錯誤。 為什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM