Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Memory allocators

I want to make a virtual allocator using c++ on windows,, which allocate data on a file on the hard disk, to reduce physical memory usage when allocate large objects !.. I don't want to use system virtual memory with virtualAlloc.. . I want to create a file on the disk and use it to allocate the whole objects and then move the part or the object that I need to the RAM .

I tried to use Memory mapped file , but I faced some problems: I used the mapped file to allocate vector elements, but when I bake to delete any of them, the address of the element changed, also I can't find a method to map the object only when needed "in my test I mapped the whole file"!

Any resources or open source projects can help ???

like image 262
Ahmad Avatar asked Aug 02 '26 00:08

Ahmad


2 Answers

Google can help here. I implemented a custom STL allocator a number of years ago that used a shared memory store. The same techniques can be used to implement a disk-backed allocator. I would start by looking at this SourceForge project for inspiration.

like image 76
D.Shawley Avatar answered Aug 03 '26 13:08

D.Shawley


You may find inspiration from Boost.Interprocess, which provides support for memory mapped files, as well as allocators and containers over that memory.

More information about the allocator design can also be found at http://www.boost.org/doc/libs/1_37_0/doc/html/interprocess/architecture.html

like image 24
Éric Malenfant Avatar answered Aug 03 '26 14:08

Éric Malenfant



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!