New_(C++)

new是C + + 程序設計語言中的一種語言結構 ， 用於動態分配內存 、 並用構造函數初始化分配的內存 。 new的使用稱爲 “ new運算符表達式 ” ， 其內部實現分爲兩步 ： 調用相應的operator new 函數 ， 動態分配內存 。 如果operator new 不能成功獲得內存 ， 則調用new_handler函數 。 如果沒有設置new_handler函數或者new_handler未能分配足夠內存 ， 則拋出std:: bad_alloc異常 。 “ new運算符表達式 ” 所調用的operator new 函數 ， 按照C + + 的規則 ， 首先做依賴於實參的名字查找 （ 即ADL規則 ） ， 在要申請內存的數據類型T的內部 、 數據類型T定義處的命名空間查找 ； 如果沒有查找到 ， 則直接調用全局的:: operator new 函數 。 在分配到的動態內存塊上初始化相應類型的對象並返回其首地址 。 如果調用構造函數初始化對象時拋出異常 ， 則自動調用operator delete 函數釋放已經分配到的內存 。 每個new獲取的對象 ， 必須用delete析構並釋放內存 ， 以免內存泄漏 。 new運算符表達式是C + + 的一種語言結構 ， 不可重載 。 但用戶可重載operator new 函數 。