天天看點

面經5

1.__stdcall和__cdecl的差別

哈哈,又又呆住了,沒見過這兩個關鍵字

    網上查起,這兩個是函數調用的一種約定,調用方和被調用方(函數提供方)需使用相同的約定,C語言預設__cdecl,c++則是__stdcall,

函數入棧方式都是從右向左,兩者的差別就是_stdcall的函數在傳回時會自動清除堆棧中的參數;__cdecl的函數在傳回時不會自動清除堆棧中的參數,

清除工作由調用者完成。

2.vector,list,map的底層機制

這個大概意思知道,vector底層還是數組,記憶體不夠時再重新配置設定一塊空間,大小為原來的兩倍;list就是雙向連結清單,是由許多不連續的節點組成;

map底層是紅黑樹,由鍵和值構成。

3.内聯函數和宏的差別

宏隻是進行簡單的字元替換,内聯函數則會進行類型檢查,更安全。