void* operator new(size_t st,const char* pfile,int nline)
#define new new(__FILE__,__LINE__)
但是使用placement new 时,如:new(pmem)Obj(),编译就报错error C2061: 语法错误“pmem”。
大大们,这个问题如何解决?
8 个解决方案
#1
#undef new
#2
什么意思啊, 我就是要#define new 来调用重载的nerw函数,#undef的功能不是就取消了作用吗?
你回答也太不专业了
你回答也太不专业了
#3
写成 new Obj()就可以了
#4
关键词 重复定义,系统无法辨识
你重载 new,又重命名new,系统认为哪个才是你希望的?
你重载 new,又重命名new,系统认为哪个才是你希望的?
#5
#pragma push_macro("new")
#undef new
::new( (void*)( pNewData + m_nSize + i ) ) TYPE;
#pragma pop_macro("new")
借鉴CArray的实现方式,应该可以解决你的问题!
#undef new
::new( (void*)( pNewData + m_nSize + i ) ) TYPE;
#pragma pop_macro("new")
借鉴CArray的实现方式,应该可以解决你的问题!
#6
new(pmem)Obj(),因为你这用的不是调试版本的placement new 所以taodm建议你#undef new
#7
只有这样用吗?郁闷了啥,代码有点麻烦了
#8
不要这么不专业地使用placement new的方式来检测内存方面问题,基本就是一个玩具而已。
#1
#undef new
#2
什么意思啊, 我就是要#define new 来调用重载的nerw函数,#undef的功能不是就取消了作用吗?
你回答也太不专业了
你回答也太不专业了
#3
写成 new Obj()就可以了
#4
关键词 重复定义,系统无法辨识
你重载 new,又重命名new,系统认为哪个才是你希望的?
你重载 new,又重命名new,系统认为哪个才是你希望的?
#5
#pragma push_macro("new")
#undef new
::new( (void*)( pNewData + m_nSize + i ) ) TYPE;
#pragma pop_macro("new")
借鉴CArray的实现方式,应该可以解决你的问题!
#undef new
::new( (void*)( pNewData + m_nSize + i ) ) TYPE;
#pragma pop_macro("new")
借鉴CArray的实现方式,应该可以解决你的问题!
#6
new(pmem)Obj(),因为你这用的不是调试版本的placement new 所以taodm建议你#undef new
#7
只有这样用吗?郁闷了啥,代码有点麻烦了
#8
不要这么不专业地使用placement new的方式来检测内存方面问题,基本就是一个玩具而已。