博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
new delete的内部实现代码
阅读量:5244 次
发布时间:2019-06-14

本文共 576 字,大约阅读时间需要 1 分钟。

通过了解发现,原来在new的内部实现中只涉及内存的分配,也就是只考虑malloc的使用,而关于调用构造函数的部分则是交由编译器处理,所以这里看不到调用构造函数的代码。

 由malloc分配内存空间,然后判断是否分配,并发出bad_alloc的异常消息.

/*如果分配成功,返回指向内存的指针,否则。返回NULL,并抛出bad_alloc异常*/

void *operator new(int size) throw(std::bad_alloc)

{

  if(size ==0) 

     size = 1;

  while(true){

    尝试分配size个字节的内存;  //使用malloc

    if(分配成功)

                 返回一个指向该内存的指针;

            使用set_new_handler函数处理分配调用异常处理函数;

    throw  std::bad_alloc();

  }

}

delete实现:

/**/

void operator delete(void *memory) throw()

{

  if(memory == NULL) return;

      归还系统分配的内存空间;  //使用free

}

转载于:https://www.cnblogs.com/xuxu8511/archive/2012/03/26/2417698.html

你可能感兴趣的文章
12.4站立会议
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
【程序执行原理】
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>