2021年2月18日 星期四

Programmer Interview - stack v.s. heap

 stack v.s. heap

  • 與 threads 的互動
    在一個 multi-threaded 的程式中,每個 thread 都各自擁有一個 stack,但共享一個 heap。
  • object 可以儲存在 heap,而非 stack
    在 c++ 可以使用 new,來將 object 實體儲存在 heap。
        void foo () {
            // myClass, myPointer 儲存在 stack
            // myPointer 所指向的 tempClass object 則儲存在 heap
            // function 結束 myClass, myPointer 則會與 stack 一起 remove
            // 而 myPointer 所指向的 tempClass 不會,所以下 delete
            tempClass myClass;
            tempClass *myPointer = new tempClass();
            delete myPointer;
        }
  • Java 或 .NET 可以透過 garbage collection 來作到 delete myPointer; 的效果。
  • stack 跟 heap 的大小
    stack 大小是固定的,有某些語言可以增加其大小。若 stack 不夠則會造成 stackoverflow (ex 無限遞迴)。heap 大小則是靠 OS 給的。
參考資料 :

Related Posts:

  • Segment Tree 筆記 Segment-Tree 介紹 主要用來找區間最大值或區間總和。由於我是為了這題所以以區間總和做介紹。下面陣列是應對區間總和,每個 node 紀錄的有起始點, 結束點及區間總和,EXAMPLE: [0,4] 代表 index 0 ~ 4 的總和,其總和為 10,[0,0] 代表 index 0~0 也就是 nums[0] 的本身值。至於樹為什麼長這樣跟 Build tree 有關。 // nums:[-1, 4, … Read More
  • Topological Ordering 介紹 Directed Acyclic Graph (DAG) 介紹 不同於 Tree 的無方向、無環,DAG 則是有方向、無環。DAG 特性是不斷地前進,有時分流、有時合流,日常常見的 DAG 為族譜、水流以及課程擋修規則。 實作 Topological Ordering 拿課程擋修規則為例,有必須先修的課程及後修的課程,將其完整排列出來視為 Topological Ordering。 // 課… Read More
  • 面試心得 - Houzz Job Company :  Houzz Job :  Back-End Software Engineer Source :  Recruiter on LinkedIn Result :  止步二面 Summary 1. 英文程度不佳 :  純英文溝通 Coding 時的想法及實作方法等… Read More
  • Programmer Interview - stack v.s. heap  stack v.s. heap 與 threads 的互動 在一個 multi-threaded 的程式中,每個 thread 都各自擁有一個 stack,但共享一個 heap。 object 可以儲存在 heap,而非 stack 在 c++ 可以使用 new,來將 object 實體儲存在 heap。 void foo () { // myClass, myPointer 儲… Read More

0 意見:

張貼留言

Popular Posts