2013-10-19 70 views
-1

如果我確實cin >> myVar確實存在這些數據?它是否生活在函數'範圍'中,並且在我的函數之外是不確定的?它是否生活在應用程序邊界內?cin是堆棧還是堆棧?

+0

你指的是哪些數據? 'myVar'? 'cin'對象?它使用的緩衝區?底層操作系統流的數據結構?還有別的嗎? –

回答

3

cin使用緩衝區並將數據寫入myVar,這取決於您如何聲明myVar。

如果myVar是一個本地參數,那麼它的數據存儲在堆棧中,並在函數結束時超出範圍。

如果myVar是從堆中動態分配的(使用「new」關鍵字),那麼數據將駐留在堆上。在這種情況下,有幾種方法可以管理數據的範圍/使用壽命(即RAII或智能指針),但底線是程序員負責確保內存得到正確釋放。如果內存未被釋放,則在程序結束時它將被釋放。