7

在 C++ 中,当我这样使用时std::cout

std::cout << "myString" << std::endl;

std::cout会在堆上分配什么吗?或者 std::cout 会做堆栈上的所有事情(意味着 std::cout 及其底层函数不会做任何事情new/malloc/etc...)?

我想知道大量使用 std::cout 是否会导致一些堆碎片

4

2 回答 2

7

在这个特定示例中,您的代码不会导致堆上的任何直接分配。但是,任何方法的实现都可以使用堆来完成部分工作。只要方法实现在其自身之后正确清理,这完全没问题。

此逻辑适用于诸如operator<<(std::ostream&, T).

于 2012-04-23T17:44:58.917 回答
5

这完全取决于基本 C++ 库的某种实现

于 2012-04-23T17:52:15.327 回答