Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
C++ 不支持C99复合文字。在许多情况下,列表初始化提供了一个很好的选择。但是,不能保证它们不会堆分配内存。
对于需要完全无需堆分配的 C++ 代码,是否有任何方便且可移植的替代方案?
正如链接问题的答案所示,由于 C++14,编译器无法堆分配初始化列表。此外,即使是 C++14 之前的编译器也不会堆分配初始化程序列表,因为绝对没有理由这样做(并且有很多理由不这样做)。
如果你的程序完全没有堆分配,添加列表初始化就可以了,不会导致堆内存分配。
iist 初始化可能导致堆分配的情况是您的对象已经使用堆内存的情况,例如 std::list。如果您是无堆的,您当然不会使用这些。