堆和棧的區別是? (1)存儲內容不同 棧:在函數調用時,棧中存放的是函數中(最底下是函數調用后的下一條指令)的各個參數(局部變量)。 堆:一般是在堆的頭部用一個字節存放堆的大小。堆中的具體內容由程序員分配。 (2)管理方式上不同 棧:由系統自動分配并釋放空間。 例如,聲明在函數中一個局部變量 int b; 系統自動在棧中為b開辟空間,當對應的生存周期結束后棧空間被自動釋放。 堆:需要程序員指定大小手動申請和手動釋放,在C語言中使用malloc函數申請,使用free函數釋放。 (3)空間大小不同 棧:獲取空間較小。在Windows下一般大小是1M或2M,當剩余棧空間不足時,分配失敗overflow。 堆:獲得空間根據系統的有效虛擬內存有關,比較靈活、大。
面試官問的面試題: 題一,堆和棧的區別是?
題二,Volatile與Register的區別是?
題三,ARM里的大端格式和小端格式分別是什么意思?