New (C++) new是C程序设计语言中的一种语言结构用于动态分配内存并用构造函数初始化分配的内存 new的使用称为new运算符表达式其内部实现分为两步 调用相应的operator new函数动态分配内存如果operator new不能成功获得内存则调用newhandler函数如果没有设置newhandler函数或者newhandler未能分配足够内存则抛出stdbadalloc异常new运算符表达式所调用的operator new函数按照C的名字查找英语name lookup规则首先做依赖于实参的名字查找即ADL规则在要申请内存的数据类型T的内部数据类型T定义处的命名空间查找如果没有查找到则直接调用全局的operator new函数 在分配到的动态内存块上初始化相应类型的对象并返回其首地址如果调用构造函数初始化对象时抛出异常则自动调用operator delete函数释放已经分配到的内存 每个new获取的对象必须用delete析构并释放内存以免内存泄漏 new运算符表达式是C的一种语言结构不可重载但用户可重载operator new函数