有沒有辦法在linux機器上用隨機數據填充空閒內存?用隨機數據填充內存
我問這個問題的原因:我正在一個我們在Fortran中進行數值編程的小組工作。有時候,人們會用雙精度實數工作,所以那些應該給出雙精度結果的程序只能提供單精度。
如果我的理解是正確的,那麼在這樣的程序中,單精度限制之後會出現結果的隨機波動。也就是說,如果多次使用相同的輸入運行相同的程序,則每次都會得到隨機的不同結果。你看到的(隨機部分)取決於機器可用RAM中的隨機值。但在實踐中,如果您在同一臺機器上反覆運行程序,則會重複使用相同的內存部分,這些內存中隨機數據相同,每次都會產生相同的輸出。
我的想法是,如果您可以用隨機數據覆蓋內存,您實際上會看到程序輸出中的隨機波動。這將使它更容易找到這些錯誤。
這個想法是否重要,或者如果不是,我該如何填充內存?我可以將/ dev/random插入RAM中嗎?
給予進程的內存在使用前被初始化(使用來自磁盤的數據)或歸零。沒有例外。所以你可以在這裏做的是從有問題的程序中隨機化內存。 – bdonlan 2009-08-11 14:02:22
我有點確定它不是......特別是在沒有初始化的字符串中,我始終看到「二進制垃圾」......它可能是內存在開始時初始化的,而垃圾是從內存在程序內部重用,但無論如何,都可以有隨機數據。 – 2009-08-11 20:59:12
找過問題之後,我看到傻冒處理遺留應用程序,你需要調試它,最好你想調試「到位」了,和一個簡單的,創造性的辦法是隨機的數據。不過,我不知道這是否可能。你可能會變得更好,通過中斷代碼來完成它自己的模塊的數字雙/單返回,將其連接到單元測試框架,並以此方式運行。這可能需要很多工作,但是你可以證明這些數字是以這種方式準確地返回的。我只是不認爲這很容易。 – 2009-08-14 13:53:06