23 ms·
You can definitely implement malloc in C. It does nothing special in its most basic form but cough up void pointers into its own arena. It gets complicated whe
by kevin_thibedeau 2y ago
You can definitely implement malloc in C. It does nothing special in its most basic form but cough up void pointers into its own arena.
It gets complicated when you have virtual memory and an OS involved but even then you can override the system malloc with a simple implementation that allocates from a large static array.
- astrange 2y agoNo, returning parts of an array does not implement malloc as described in the standard. That's not a new memory object, it's a part of an existing one.
- kevin_thibedeau 2y agoThe standard is written to accommodate obsolete tagged memory architectures that require special support. They aren't relevant today and data pointers are fungible regardless of where they originate.
- kragen 2y agoMorello is.
- astrange 2y ago> data pointers are fungible regardless of where they originate. This was never true because of something called provenance: https://www.ralfj.de/blog/2020/12/14/provenance.html https://www.ralfj.de/blog/2020/12/14/provenance.html. Though it usually doesn't matter and I think it annoys anyone who finds out about it. But in practice it's not always true on Apple A12 or later because they support PAC (so pointers of different type to the same address can be not equal bit-wise) and is even less true on very latest Android because it supports the really big gun MTE. And MTE is great; you don't want to miss out on it. No explainer here because there's no Wikipedia article for it(!). Also becomes not true on any system if you use -fbounds-safety or some of the sanitizers.