C++标准库的哪些部分(除了容器)可能会导致内存分配?

r7xajy2e  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(93)

标准库中有一些明显的部分在堆上进行内存分配,例如std::stringstd::vectorstd::liststd::map .其他部分有时会以一种不太明显的方式“意外地”分配内存,例如std::function .
除了字符串和容器之外,标准库的哪些部分可能会导致堆上的内存分配?我对那些不明显的情况最感兴趣。

kqlmhetl

kqlmhetl1#

C++标准库中明确分配内存的部分和标准库中明确不分配内存的部分之间没有明确的界限。在某些特定情况下,标准完全禁止类型或函数进行动态分配(optionalvariant被明确禁止使用动态分配实现)。在某些特定的情况下,如果没有完全要求实现执行动态分配(任何显式指定为能够抛出std::bad_alloc的操作)。
但是除了这些情况,你不能真正知道,除了那些被明确禁止的情况,你将不得不依赖于实现的质量。

相关问题