我正在嘗試在使用char數組的Linux VM中創建C程序。我發現每次我嘗試對數組做任何事情時,例如sizeof()
,我得到了分段錯誤。我寫了一個測試程序,只是做了一個數組,並得到sizeof()
作爲測試,果然我得到了同樣的錯誤。 我認爲這與在VM中運行的程序有關。下面是代碼:Kali Linux VM中的C分段錯誤
#include <stdio.h>
#include <stdlib.h>
#define ARR_LENGTH(x) sizeof(x)/sizeof(x[0])
int main()
{
printf("Hllo world!\n");
int sent = 10;
char hello[] = {'a','b','c','d','e','f','g','h'};
printf(sizeof(hello));
printf(ARR_LENGTH(hello));
return 0;
}
我失去的東西,或者是虛擬機可能是什麼問題?
'printf(sizeof(hello));'不是你如何打印一個數字。 'printf'將使用該數字作爲'char *',這很可能導致分段錯誤。我很驚訝你的編譯器沒有警告你。 – Biffen
......不,這與它在VM中運行無關。 (非常好奇你是如何得出這個結論的。) – Biffen
在使用它們或者懷疑操作系統之前,閱讀你使用的標準函數的手冊頁是一個好主意。虛擬機將會對應用程序代碼產生影響。這是使用它的基本思想。 – Olaf