[英]Why I am not getting the expected output for bellows function overloading?
This is the code example of overloading of operator new and operator delete.这是 operator new 和 operator delete 重载的代码示例。
my expected output is:我预期的 output 是:
Overloaded new
The value is :10
Overloaded delete
But I am getting:但我得到:
Overloaded new
The value is :10
#include <iostream>
#include <stdlib.h>
using namespace std;
void *operator new(size_t n)
{
cout<<"Overloaded new" <<endl;
void *ptr = malloc(n);
return ptr;
}
void operator delete(void *p)
{
cout<<"Overloaded delete"<<endl;
free(p);
}
int main()
{
int *p = new (int);
*p = 10;
cout<<"The value is :"<<*p<<endl;
delete p;
return 0;
}
why is this happening can anyone explain?为什么会发生这种情况,谁能解释?
When replacing the global operator delete, you should provide two overloads替换全局运算符 delete 时,应提供两个重载
void operator delete(void *p) noexcept
and和
void operator delete(void *p, size_t n) noexcept
In some situations it's unspecified which will be used.在某些情况下,未指定将使用哪个。
Source cppreference源cppreference
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.