std :: cout是否完全在堆栈上运行?

时间:2012-04-23 17:41:32

标签: c++ stack heap cout

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

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

std :: cout是否会在上分配任何内容?或者std :: cout会在堆栈上执行所有操作(意味着std :: cout及其底层函数不会执行任何new/malloc/etc...)?

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

2 个答案:

答案 0 :(得分:7)

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

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

等方法

答案 1 :(得分:5)

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