2 ms·
That's the union, but what about the algorithm?
by dleslie 9y ago
That's the union, but what about the algorithm?
- jcelerier 9y agowhy would it allocate ? creating objects does not trigger allocations most of the time. The only stack space used is the internal state of the functor used, which is a lot of time empty (and won't even exist anymore by the time the compiler has optimized your code). eg. look here: https://godbolt.org/g/AdLAi1 https://godbolt.org/g/AdLAi1 there's not a single new / malloc / whatever
- dleslie 9y agoNow I know that there's a stack allocation for the functor. Not all platforms have Sufficiently Smart Compilers; I've got code relying on SDCC and TCC, for instance. :) That's what I'm getting at, there's this whole new suite of functionality that is sort of opaque to me, whereas I'm used to having a grasp of what's going on at-a-glance when working with C and C++98. I'll just have to spend a weekend working with it.
- jcelerier 9y ago> Not all platforms have Sufficiently Smart Compilers; I've got code relying on SDCC and TCC, for instance. :) I'm pretty sure that it's not a matter of compiler brightness; the C and C++ standards are both pretty explicit about when the automatic and dynamic storages are used. If anything, I guess that it would be harder for compilers to allocate such things on the heap. I checked and tcc doesn't allocate anything for instance for this code; neither does gcc 4.4 in c++98 mode : int main() { struct foo { int a, b, c; char x[3000]; } f; }
- dleslie 9y agoYou're basically confirming my supposition that I'll need to spend time reviewing the new C++ standards. ;)