I have overloaded the global new and delete operators for purpose of demonstrating my problem:
#include <malloc.h>
#include <stdio.h>
int newctr = 0;
int delctr = 0;
inline void* operator new (size_t size)
{
newctr++;
return malloc(size);
}
inline void* operator new [] (size_t size)
{
newctr++;
return malloc(size);
}
inline void operator delete (void* p)
{
delctr++;
free(p);
}
inline void operator delete [] (void* p)
{
delctr++;
free(p);
}
void report(void)
{
printf("new calls: %d\n",newctr);
printf("delete calls: %d\n",delctr);
}
#include <vector>
int main(void)
{
atexit(report);
std::vector v;
return 0;
}
result:
new calls: 0
delete calls: 1
Whenever I use STL classes they call the delete operator but not new. Does anyone know 1) Why this happens 2) How to fix it.
Thanks,