在C ++中,当我使用std::cout
时:
std::cout << "myString" << std::endl;
std :: cout是否会在堆上分配任何内容?或者std :: cout会在堆栈上执行所有操作(意味着std :: cout及其底层函数不会执行任何new/malloc/etc...
)?
我想知道是否大量使用std :: cout会导致一些堆碎片
答案 0 :(得分:7)
在此特定示例中,您的代码不会在堆上引起任何直接分配。但是,任何方法的实现都可以使用堆来完成部分工作。只要方法实现在其自身之后正确清理,这就完全没问题。
此逻辑适用于operator<<(std::ostream&, T)
。
答案 1 :(得分:5)
这完全取决于基本C ++库的某些实现