2013-10-19 92 views
-1

如果我确实cin >> myVar确实存在这些数据?它是否生活在函数'范围'中,并且在我的函数之外是不确定的?它是否生活在应用程序边界内?cin是堆栈还是堆栈?

+0

你指的是哪些数据? 'myVar'? 'cin'对象?它使用的缓冲区?底层操作系统流的数据结构?还有别的吗? –

回答

3

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

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

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