如果我cin >> myVar
这些数据是否存在于堆栈中?它是否存在于函数“范围”中并且在我的函数之外未定义?它是否存在于应用程序边界内?
答案 0 :(得分:3)
cin使用缓冲区并将数据写入myVar,因此它取决于您如何声明myVar。
如果myVar是一个本地参数,那么它的数据将存储在堆栈中,并在函数结束时超出范围。
如果从堆中动态分配myVar(使用“new”关键字),则数据将存在于堆上。在这种情况下,有几种方法可以管理数据的范围/寿命(即RAII或智能指针),但最重要的是程序员负责确保正确释放内存。如果事先未释放存储器,则在程序结束时将释放存储器。