現在的c++中,new有三種典型的使用方法,對應於下面三種格式。
1.new : 普通的new操作,一旦記憶體分配失敗,直接丟擲乙個異常,需要用catch來處理這種異常資訊。
2. new(nothrow) : 不丟擲異常的new操作, 一旦記憶體分配失敗,禁止丟擲異常,而是返回乙個null,可以通過判斷指標是不是null來處理這種異常。
3. placement new : 直接復用已經分配好記憶體的指標的new操作,該操作只是會呼叫建構函式,將這部分記憶體重新做初始化操作。例子如下所示:
函式func1()裡面的 a==null可以捕獲記憶體分配失敗的場景。
函式func2(), a==null 並不能起到保護記憶體分配失敗的場景,需要用catch來處理。
函式func3(),placement new操作之後,b的位址與a的位址是一致的,只不過b重新做了這部分記憶體的初始化操作。
程式執行結果如下所示:
Redis介紹及幾種型別
高併發,高可擴,高效能 為什麼可以解決高併發情況下的秒殺,而且在 中沒有看到任何的鎖?它是乙個單執行緒的服務。多執行緒 cpu上下文切換 一定比單執行緒快?錯 redis是單執行緒服務,那麼redis服務裡面是不是只有乙個執行緒?錯 單執行緒代表的時候處理命令或者指令的時候,後台只有乙個處理指令執行...
C 繼承的幾種型別
一.重用 包含 新的類將包含另乙個類的物件 has a 二.繼承的幾種型別 公有繼承 基類的公有方法將成為派生類的公有方法,總之,派生類將繼承基類的介面 is a關係 私有繼承 基類的公有方法將成為派生類的私有方法,總之,派生類不繼承基類的介面 獲得實現,但不獲得介面。has a關係 多重繼承 cl...
C 幾種型別轉換的例子
1.int,float,byte,char型別數值強制相互轉換 方法 byte dat1 int dat2 1000 dat1 byte dat2 數值取整模256,最後值為0xe8 dat2 int dat1 最後值為0xe8 byte dat1 float dat2 123.44 dat1 by...