vs2017 new运算符重载出现C2956错误
2018-02-09 20:23
1036 查看
在vs2008下将new运算符重载定义为
static void *operator new(size_t objSize, busx_size_t bufferSize);
编译正常。
改到vs2017下编译出现错误:
大小释放函数 "perator delete(void*, size_t)"会被选为位置释放函数
在https://msdn.microsoft.com/en-us/library/bb531344.aspx “Placement new and delete”找到了问题的原因。
微软为了符合c++14版增加了new、delete运算符:
void * operator new(std::size_t, std::size_t);
void operator delete(void*, std::size_t) ;
enum class busx_size_t : size_t {}; //underly type 底层函数
用busx_size_t取代重载运算符第二个参数类型
delete调用方式:operator delete (pBuffer,(static_cast<busx_size_t>(m_bufferSize)));
static void *operator new(size_t objSize, busx_size_t bufferSize);
编译正常。
改到vs2017下编译出现错误:
大小释放函数 "perator delete(void*, size_t)"会被选为位置释放函数
在https://msdn.microsoft.com/en-us/library/bb531344.aspx “Placement new and delete”找到了问题的原因。
微软为了符合c++14版增加了new、delete运算符:
void * operator new(std::size_t, std::size_t);
void operator delete(void*, std::size_t) ;
导致我重载的new运算符与原有运算符参数相同为解决此问题,定义枚举类型:
enum class busx_size_t : size_t {}; //underly type 底层函数
用busx_size_t取代重载运算符第二个参数类型
delete调用方式:operator delete (pBuffer,(static_cast<busx_size_t>(m_bufferSize)));
相关文章推荐
- VS2017试用期到期后登录微软账户出现错误解决方法
- VS2017 安装 R 组件后出现警告
- VS2017,MFC在界面添加类中,出现缺少默认default.js或者.vbs
- VS 2017 RC .net core ef+ MySql 出现错误
- QT 5 安装 vs2017 后,出现找不到 rc.exe 问题
- VS2017运行程序出现乱码解决方法
- ABP-vs2017执行Add-Migration出现的问题
- vs2017控制台出现中文乱码
- 阿里云出现 RHSA-2017:1842: kernel security, bug fix, and enhancement update (Important)问题解决
- VS2013出现应用程序无法正常启动
- 恒大vs上港,奇迹险些出现!
- VS中出现“LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效
- Vs 中出现 error LNK2019: 无法解析的外部符号的解决参考
- 关于孙鑫课程第14课网络编程使用VS2013 inet_addr,inet_ntoa出现的问题
- LAPACK使用中出现问题的解决方案(VS平台下的)
- VS2017 -- 开启C++编程之旅
- 进程出现*.vshost.exe的进程
- vs2017 openGL的环境配置
- 解决VAX 2210 不能识别 VS2017的问题
- VS.NET调试.NET出现的常见错误 (转载)