面試中遇到的有趣的小問題

頻繁地malloc與free內存會有什麼問題

頻繁的malloc與free會造成內存碎片化的問題,從而無法進行大容量內存的分配,當然,有的庫對此進行了優化,比如glibc,free掉的內存不會立即返還給操作系統,而是先給空閒內存鏈表,然後當再次進行malloc時會先從空閒內存鏈表中尋找合適的內存塊。可以看看這個:http://www.valleytalk.org/wp-content/uploads/2015/02/glibc%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86ptmalloc%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%901.pdf 當然還可以使用內存池。

如下程序能否運行

demo.h


#include <cstdio>

int main(

demo.cpp

)
{
 printf("hello\n");
 return 0;    
}

答案是能運行,我們需要重新回憶一下C/C++的編譯步驟,“首先是預處理階段,這個階段,編譯器以C文件作爲一個單元,首先讀這個C文件,發現頭文件,就會在所有搜索路徑中尋找這兩個文件,找到之後,就會將相應頭文件中再去處理宏,變量, 函數聲明,嵌套的頭文件包含等,檢測依賴關係,進行宏替換,看是否有重複定義與聲明的情況發生,最後將那些文件中所有的東東全部掃描進這個當前的C文件中,形成一箇中間C文件”。到這裏結果就很清楚了,程序爲什麼能編譯執行

判斷鏈表是否有環

很經典的一道題目,想到了一切好說,想不到就GG,別人已經總結得很好了,我就不再搬一次磚了,請參看: http://blog.csdn.net/thefutureisour/article/details/8174313

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章