1. 程式人生 > >【轉】騰訊研發類筆試面試試題(C++方向)

【轉】騰訊研發類筆試面試試題(C++方向)

C的記憶體基本上分為4部分:靜態儲存區、堆區、棧區以及常量區。他們的功能不同,對他們使用方式也就不同。

1.棧 ——由編譯器自動分配釋放;

2.堆 ——一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由OS回收;

3.全域性區(靜態區)——全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數

和未初始化的靜態變數在相鄰的另一塊區域(C++中已經不再這樣劃分),程式結束釋放;

4.另外還有一個專門放常量的地方,程式結束釋放;

(a)函式體中定義的變數通常是在棧上;

(b)用malloc, calloc, realloc等分配記憶體的函式分配得到的就是在堆上;

(c)在所有函式體外定義的是全域性量;

(d)加了static修飾符後不管在哪裡都存放在全域性區(靜態區);

(e)在所有函式體外定義的static變量表示在該檔案中有效,不能extern到別的檔案用;

(f)在函式體內定義的static表示只在該函式體內有效;

(g)另外,函式中的"adgfdf"這樣的字串存放在常量區。