我看到的一切都是這樣說的,我如何得到一個合理的參數種子隨機數。int x = time(NULL); => SEGFAULT?
int seed = time(NULL);
segfaults。所以確實
time_t seed = time(NULL);
int seed = (int)time(NULL);
等等,等等
有什麼想法?
我看到的一切都是這樣說的,我如何得到一個合理的參數種子隨機數。int x = time(NULL); => SEGFAULT?
int seed = time(NULL);
segfaults。所以確實
time_t seed = time(NULL);
int seed = (int)time(NULL);
等等,等等
有什麼想法?
工作對我來說:
#include <time.h>
int main()
{
time_t seed = time(NULL);
return 0;
}
// gcc x.c && ./a.out
// echo $?
// > 0
立即彈簧想到的唯一的事情是,有人已經重新定義NULL
是非零。如果傳遞一個非空指針,它將嘗試寫入該內存,這可能會導致段錯誤。
快速檢查是嘗試time(0)
來代替。
如果失敗,那可能是其他地方的腐敗造成的,在這種情況下,最好的辦法就是用調試器單步調試。
還要確保你已經包含正確的標題。在一個整數(在先前的標準之後的編譯器中的參數的默認值)與指針的大小不同的系統中,可能會導致堆棧未對齊。我在某些64位系統上看到了這種效果。
時間(0) - >成功。看起來NULL不知何故不起作用。我幾乎肯定我自己沒有重新定義它。有什麼你知道的嗎?我只使用常見的頭:#包括
我使用的是32位系統 – Lucas 2012-08-03 14:22:16
沒有_should_觸摸NULL,它會打破很多代碼。如果你的編譯器支持像'gcc -E'這樣的預處理器輸出(來自內存),你可以檢查它。 – paxdiablo 2012-08-03 14:24:29
問題出在別的地方,其中一部分代碼你沒有顯示,我相信。 – Mahesh 2012-08-03 14:06:57
您的系統可以在那個時間(time_t * dest)有dest * mandatory *嗎?嘗試時間(&種子),看看它是否有效,請 – Senna 2012-08-03 14:07:38
通過'gdb'運行這個,看*哪裏*它segfaults。 – MvG 2012-08-03 14:09:12