Foreign.Marshal.Pool
| Авторские права | (c) Sven Panne 2002-2004 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | sven.panne@aedion.de |
| Устойчивость | временная |
| Переносимость | переносимая |
| Безопасный Haskell | Надежный |
| Язык | Haskell2010 |
Описание
Этот модуль содержит поддержку управления памятью в пулах. В этой схеме (пере)выделение относится к заданному пулу, и все содержимое пула освобождается при освобождении самого пула. Это полезно, когда alloca с его неявным выделением и освобождением недостаточно гибко, а явное использование malloc и free слишком громоздко.
Управление пулом
Пул памяти.
Выделить новый пул памяти.
freePool :: Pool -> IO () Source
Освободить пул памяти и все выделенные в нём ресурсы.
withPool :: (Pool -> IO b) -> IO b Source
Выполнить действие с новым пулом памяти, который автоматически освобождается (вместе со своим содержимым) после завершения действия.
(Пере)выделение в рамках пула
pooledMalloc :: Storable a => Pool -> IO (Ptr a) Source
Выделить место для типа storable в данном пуле. Размер выделенной области определяется методом sizeOf из экземпляра Storable для соответствующего типа.
pooledMallocBytes :: Pool -> Int -> IO (Ptr a) Source
Выделить заданное количество байтов памяти в пуле.
pooledRealloc :: Storable a => Pool -> Ptr a -> IO (Ptr a) Source
Изменить область памяти для элемента в пуле на заданный размер требуемого типа.
pooledReallocBytes :: Pool -> Ptr a -> Int -> IO (Ptr a) Source
Изменить область памяти для элемента в пуле на заданный размер.
pooledMallocArray :: Storable a => Pool -> Int -> IO (Ptr a) Source
Выделить место для заданного количества элементов типа storable в пуле.
pooledMallocArray0 :: Storable a => Pool -> Int -> IO (Ptr a) Source
Выделить память для заданного числа элементов хранимого типа в пуле, но оставить место для дополнительного элемента, чтобы сигнализировать об окончании массива.
pooledReallocArray :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a) Источник
Изменить размер массива в заданном пуле.
pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int -> IO (Ptr a) Источник
Изменить размер массива с маркером конца в заданном пуле.
Объединённое выделение памяти и маршаллинг
pooledNew :: Storable a => Pool -> a -> IO (Ptr a) Источник
Выделить память для значения в заданном пуле и маршаллировать значение в это хранилище.
pooledNewArray :: Storable a => Pool -> [a] -> IO (Ptr a) Источник
Выделить последовательную память для списка значений в заданном пуле и маршаллировать эти значения в него.
pooledNewArray0 :: Storable a => Pool -> a -> [a] -> IO (Ptr a) Источник
Выделить последовательную память для списка значений в заданном пуле и маршаллировать эти значения в него, завершая конец заданным маркером.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-Marshal-Pool.html