Я экспериментирую с пакетом Haskell mmap, и я довольно новичок в Haskell, поэтому я пытаюсь начать с написания небольшой программы для записи небольшого количества данных в файл с отображением памяти.
Этот код правильно создает и размер файла, но, похоже, не очищает данные от вектора до файла с отображением памяти; Я проверил это с помощью hexdump - это всего лишь 0s.
Что происходит не так?
import Control.Monad
import Data.Vector.Storable
import Foreign.Marshal.Array
import System.Directory
import System.IO
import System.IO.MMap
createFile :: FilePath -> Integer -> IO ()
createFile path size = do
h <- openBinaryFile path WriteMode
hSetFileSize h size
n = 10
size = 10 * 8
path = "test.dat" :: FilePath
main :: IO ()
main = do
createFile "signal.ml" size
let v = generate n (\i -> i) :: Vector Int
putStrLn $ show v
(ptr, s, _, _) <- mmapFilePtr path ReadWrite Nothing
unsafeWith v (\srcPtr -> copyArray ptr srcPtr n)
munmapFilePtr ptr s
Большое спасибо.