cin是在堆还是堆栈上?

时间:2013-10-19 02:16:04

标签: c++

如果我cin >> myVar这些数据是否存在于堆栈中?它是否存在于函数“范围”中并且在我的函数之外未定义?它是否存在于应用程序边界内?

1 个答案:

答案 0 :(得分:3)

cin使用缓冲区并将数据写入myVar,因此它取决于您如何声明myVar。

如果myVar是一个本地参数,那么它的数据将存储在堆栈中,并在函数结束时超出范围。

如果从堆中动态分配myVar(使用“new”关键字),则数据将存在于堆上。在这种情况下,有几种方法可以管理数据的范围/寿命(即RAII或智能指针),但最重要的是程序员负责确保正确释放内存。如果事先未释放存储器,则在程序结束时将释放存储器。