在C
堆棧vs. heap:lifeSpan 的問題,與普遍的信念相反,性能並不是選擇堆棧和堆和堆的主要因素。關鍵差異在於變量的壽命。
將本地變量存儲在僅在該函數中可訪問的函數中。這些變量在返回函數時會自動破壞。heap:
存儲對象,很少使用的變量,以及需要超越其聲明功能的大數據結構。 clarity clarity 考慮以下代碼shippet:
class thitty; 東西* foo() { int a; //堆棧 - 分配整數 b; //堆棧 - 分配的東西對象 東西 *pointertob =&b; //指向堆棧分配對象的指針 thing *pointertoc = new Thingy(); //堆 - 分配的東西對象 //安全:堆分配的東西概要foo() 返回pointertoc; //不安全:堆棧分配的東西將在foo()返回時被銷毀 返回Pointertob; 在此示例中}A和b被存儲在堆棧上,因為它們是foo()本地的。
Understanding the stack concept requires a deeper dive into the基礎機器。 “ Heap”和“ stack”是編譯器發明,計算機的內存只是地址數組。通過檢查諸如呼叫堆棧和呼叫慣例之類的概念,可以掌握機器如何執行功能並管理內存。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3