保证免于堆分配的复合文字的可移植 C++ 替代方案

A portable C++ alternative to compound literals that is guaranteed to be free of heap allocation

C99compound literals are . In many cases, list intialization provides an excellent alternative. However, they are not guaranteed not to heap-allocate memory.

对于需要在没有堆分配的情况下完全工作的 C++ 代码,是否有任何方便且可移植的替代方案?

如果您的程序完全没有堆分配就可以运行,添加列表初始化就可以了,不会导致堆内存分配。

iist 初始化可能导致堆分配的情况是您的对象已经使用堆内存的情况,例如std::list。如果你没有堆,你当然不会使用那些。

如链接问题的答案所示,由于 C++14,编译器无法 heap-allocate 初始化列表。此外,甚至 pre-C++14 编译器也不会堆分配初始化列表,因为绝对没有理由这样做(并且有很多理由不这样做)。