栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++内存管理4

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++内存管理4

new expression

complex* pc =new complex(1,2);
//转化为
complex *pc;
try{
	1.void* mem= operator new(sizeof(complex));//分配内存,operator可以被重载
	2.pc= static_cast(mem);//cast强制转换
	3.pc->complex::complex(1,2);//调用构造函数(不能直接调用)
}
catch(std::bad_alloc){
	//若allocation失败就不执行constructor
}

operator new源码

void *operator new(size_t size,const std::nothrow_t& _THROW0()){//参数2是为了不抛异常
	//try to allocate size bytes
	void* p;
	while((p==malloc(size))==0){//malloc成功不等于0
		_TRY_BEGIN
		if(_callnewh(size)==0) break;
		_CATCH(std::bad_alloc) return 0;
		_CATCH_END
	}
return (p);
}

_callnewh为调用new handler,是自己设定的,在内存用光时,调用自己设定的_callmewh函数释放想释放的内存。

以上来自侯捷老师视频仅用于学习。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号