News for hackers. Stuff that matters.
Re:Stop Memsetting Structures by a_t48 on Saturday April 27, 2019 @04:46PM (#19767531)
Indeed, this. If you have data with pointers, you either need to flatten (read: copy) your structure into something appropriate for structuring, or just get a proper serialization layer.
Re:Stop Memsetting Structures by repsilat on Saturday April 27, 2019 @05:55PM (#19767866)
I guess there could be some fun workarounds with ptrdiff_t instead of pointers. "My child is 1000 bytes that way in memory" etc.
Re:Stop Memsetting Structures by a_t48 on Saturday April 27, 2019 @06:24PM (#19768006)
That's a pretty classical file serialization trick to pack a bunch of heterogeneous data in one file. A header/manifest starting the file, with an array of names, offsets, and sizes.
Re:Stop Memsetting Structures by blattimwind on Saturday April 27, 2019 @09:02PM (#19768657)
Actually works somewhat well for mmap'ed access, too, by using a macro or function to "dereference" "pointers" (offsets).
Re:Stop Memsetting Structures by a_t48 on Saturday April 27, 2019 @10:38PM (#19768951)
Or even an OffsetPtr class with overloaded arrow and dereference operator, if you swing that way. :)
Re:Stop Memsetting Structures by DaiPlusPlus on Sunday April 28, 2019 @08:59AM (#19770921)
What’s the runtime performance of that in-practice? Does x86, x64 and ARM have support for relative offset pointers without any performance impact? And do compilers use them?
Re:Stop Memsetting Structures by blattimwind on Sunday April 28, 2019 @12:38PM (#19772073)
Yes, address generation can at the very least do [reg + constant], and on x86, much much more. These are bread and butter optimizations constantly used by compilers all over the place, because this is how field access works.