new and delete operator overloading
Posted
by
Angus
on Stack Overflow
See other posts from Stack Overflow
or by Angus
Published on 2013-10-21T03:30:41Z
Indexed on
2013/10/21
3:54 UTC
Read the original article
Hit count: 340
I am writing a simple program to understand the new and delete operator overloading. How is the size
parameter passed into the new
operator?
For reference, here is my code:
#include<iostream>
#include<stdlib.h>
#include<malloc.h>
using namespace std;
class loc{
private:
int longitude,latitude;
public:
loc(){
longitude = latitude = 0;
}
loc(int lg,int lt){
longitude -= lg;
latitude -= lt;
}
void show(){
cout << "longitude" << endl;
cout << "latitude" << endl;
}
void* operator new(size_t size);
void operator delete(void* p);
void* operator new[](size_t size);
void operator delete[](void* p);
};
void* loc :: operator new(size_t size){
void* p;
cout << "In overloaded new" << endl;
p = malloc(size);
cout << "size :" << size << endl;
if(!p){
bad_alloc ba;
throw ba;
}
return p;
}
void loc :: operator delete(void* p){
cout << "In delete operator" << endl;
free(p);
}
void* loc :: operator new[](size_t size){
void* p;
cout << "In overloaded new[]" << endl;
p = malloc(size);
cout << "size :" << size << endl;
if(!p){
bad_alloc ba;
throw ba;
}
return p;
}
void loc :: operator delete[](void* p){
cout << "In delete operator - array" << endl;
free(p);
}
int main(){
loc *p1,*p2;
int i;
cout << "sizeof(loc)" << sizeof(loc) << endl;
try{
p1 = new loc(10,20);
}
catch (bad_alloc ba){
cout << "Allocation error for p1" << endl;
return 1;
}
try{
p2 = new loc[10];
}
catch(bad_alloc ba){
cout << "Allocation error for p2" << endl;
return 1;
}
p1->show();
for(i = 0;i < 10;i++){
p2[i].show();
}
delete p1;
delete[] p2;
return 0;
}
© Stack Overflow or respective owner