Why is the first C++ (m)allocation always 72 KB?
joelsiks
122 points
29 comments
March 01, 2026
Related Discussions
Found 5 related stories in 47.2ms across 3,471 title embeddings via pgvector HNSW
- Why does C have the best file API maurycyz · 95 pts · March 01, 2026 · 44% similar
- Why is this program erroneously rejected by three C++ compilers? tornikeo · 24 pts · March 14, 2026 · 44% similar
- Linux Internals: How /proc/self/mem writes to unwritable memory (2021) medbar · 59 pts · March 08, 2026 · 43% similar
- Ask HN: Why can't we just make more RAM? chatmasta · 12 pts · March 14, 2026 · 42% similar
- C Bit-Field Pitfalls fanf2 · 26 pts · March 21, 2026 · 41% similar
Discussion Highlights (9 comments)
throwaway2037
I would like the see the source code for libmymalloc.so, however, I don't see anything in the blog post. Nor do I see anything in his GitHub profile: https://github.com/jsikstro Also, I cannot find his email address anywhere (to ask him to share it on GitHub). Am I missing something?
Joker_vD
Huh. Why is this emergency pool not statically allocated? Is it possible to tune the size of this pool on libc++ startup somehow? Because otherwise it absolutely should've been statically allocated.
pjmlp
This is compiler specific and cannot be generalised as C++.
aliveintucson
I think you should read up on what "always" means.
znpy
> TLDR; The C++ standard library sets up exception handling infrastructure early on, allocating memory for an “emergency pool” to be able to allocate memory for exceptions in case malloc ever runs out of memory. Reminds me of Perl's $^M: https://perldoc.perl.org/variables/$%5EM In Perl you can "hand-manage" that. This line would allocate a 64K buffer for use in an emergency: $^M = 'a' x (1 << 16);
jebarker
Reading this was a good reminder not to be intimidated by assumptions about complexity. (Without giving it much thought) I would have assumed that it would be hard to replace malloc for such fundamental applications as ls, but it's surprisingly simple.
anonymousiam
So basically, before any of the code even runs, this environment begins by gobbling up more than the total RAM that most of my first computers had (SYM-1, IAMSAI-8080, Ferguson Big Board, Kaypro II, and CCS S-100 Z-80). All of these systems were 8-bit, with various RAM sizes from 8KB to 64KB. That was the maximum RAM available, and it was shared by the OS and the applications.
cendyne
This was a fun little share. Thanks for writing it up!
Panzerschrek
What happens if I turn exceptions off using -fno-exceptions compiler flag? Does C++ runtime still allocates this block of memory?