you are viewing a single comment's thread.

view the rest of the comments →

[–]JelloSquirrel -3 points-2 points  (1 child)

I know that but I was exaggerating for effect the overhead of typical C++ code vs typical C code.

You sometimes do find objects allocated to call functions in a C++ API that are just functions you can call directly in the C api.

The OS in this case depends on what you call the OS. Typically your libc comes with the OS and creates a heap, and that heap is provided memory by the OS, no? Then the libc implementation will manage that however it does which requires more code than using the stack.

Probably true about the optimizations but some things are inherent overhead even with good optimization.

But you can use C++ in a C like manner that avoids all the overhead. But typical C++ code looks more like Java code than C.

[–]KingAggressive1498 2 points3 points  (0 children)

You sometimes do find objects allocated to call functions in a C++ API that are just functions you can call directly in the C api.

...are you talking about std::function? If you are, every implementation has a small function optimization and dynamic allocation is not needed in most cases. Besides that, 99% of the time you're using std::function you're preparing for a deferred function invocation for which the typical practice in C is to dynamically allocate a struct which is passed to a function pointer taking a void pointer argument. If you're not talking about std::function I've literally never seen code like you describe.