zoukankan      html  css  js  c++  java
  • 【51】编写new和delete时需固守常规

    1、【50】讲了,有很多理由需要写个自定义的new/delete,自定义new/delete的时候,需要遵守一些规则。

    2、循环申请,直到成功或者抛出异常,如下:

     1     void* operator new (std::size_t size) throw()
     2     {
     3         if(size=0)
     4         {
     5             size =1;
     6         }
     7         while (true)
     8         {
     9             if(分配成功)
    10             {
    11                 return(一个指针,指向分配而来的内存);
    12             }
    13             new_hanlder global_handler = set_new_handler(0);
    14             set_new_handler(global_handler);
    15             if(global_handler)
    16             {
    17                 (*global_handler)();
    18             }
    19             else
    20             {
    21                 throw std::bad_alloc();
    22             }
    23         }
    24     }

    3、class专属版本处理,分配大小与class大小不一致的错误。
    4、delete的时候,判断是否为null。

  • 相关阅读:
    ssh 远程命令
    POJ 2287
    POJ 2376
    hihoCoder1488
    POJ1854
    HDU 5510
    HDU 4352
    CodeForces 55D
    HDU 1517
    CodeForces 1200F
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3532849.html
Copyright © 2011-2022 走看看