【发布时间】:2012-04-23 17:41:31
【问题描述】:
在 C++ 中,当我像这样使用 std::cout 时:
std::cout << "myString" << std::endl;
std::cout 会在 heap 上分配什么吗?或者 std::cout 会做 stack 上的所有事情(意味着 std::cout 及其底层函数不会做任何new/malloc/etc...)?
我想知道大量使用 std::cout 是否会导致一些堆碎片
【问题讨论】:
-
不能保证
operator<<(std::ostream&, T)不会调用new。这显然适用于任何用户定义的T。 -
你为什么担心堆碎片。您正在做的其他事情是否使这成为一个大问题?
-
@LokiAstari 我只是出于好奇而问这个问题。
-
更根本的是,该标准没有讨论堆栈与堆。通过动态分配所有内容,C++ 实现完全有可能没有堆栈。
标签: c++ heap-memory cout stack-memory