Hacker News new | ask | show | jobs
by Zoh0eich 2709 days ago
That's not possible to do safely for arbitrary data structures because they can contain pointers or references. If you reload to a different address then the pointers, even within the allocated chunk, would be invalid and require fixup. And if you require fixup then you might as well do (de)serialization for your data structures.

Just allocating into such a memory region (essentially custom page swapping) will eventually be possible with data structures that can be constructed with custom allocators, but it still wouldn't be ok to reload those.

1 comments

Perhaps this problem can be overcome by modifying the concept of a pointer slightly, to make it a "based pointer" (?)

I found an old discussion on this topic here: https://news.ycombinator.com/item?id=13890011

Note that the Microsoft C++ compiler implements based pointers, using the __based keyword.

Specialized data structures can be built that contain primitives and other types supporting this kind of thing. But you still can't store arbitrary data because they could contain FFI pointers, handles to native resources, things that need to run destructors etc.

So to do this safely all the types must be whitelisted through a custom trait. Copy is close, but not quite, since references are still Copy.