2014-10-07 28 views
0

我只是編程的新手,並且想要了解Linux下的gcc做什麼,當我用std::vector()保留空間時。 我期望的東西像new聲明,但我發現_M_allocatevector.tcc。 環顧四周後,我發現這些地方的聲明都是_M_something,但沒有正確的解釋。 有人可以幫助我嗎? 這些符號如何以及在哪裏解決?用_M_allocate理解std :: vector()分配

+0

'_M_something'是內部幫手。 ('_M_'部分使它們成爲保留的標識符,所以用戶代碼不能合法地使用(或'#define')。)你應該查看所有細節的。至於'_M_allocate',它只是使用allocator()分配內存。 – 2014-10-07 12:58:49

+0

請不要試圖通過閱讀標準庫的源代碼來學習C++。它的性能不是可讀性,故意使用不可讀的變量名來避免名稱衝突。 – sjdowling 2014-10-07 13:04:16

+0

好的,明白了! @sjdowling你還想了解什麼標準庫? – Tik0 2014-10-07 13:24:22

回答

1

_M_something表示內部成員函數。它有一個reserved indentifier(下劃線+大寫字母)。

報價GNU Coding Style

Member data and function names: _M_.* 
Examples: _M_num_elements _M_initialize() 

std::vector不使用生new/delete,而是std::allocator管理/構建的內存塊。