L
Lighter
Is there a way to write a memory leak detector supporting new(nothrow)?
For example,
#include <My_Debug_New.h>
using namespace std;
int main()
{
int* p1 = new int;
int* p2 = new(nothrow) int; // note this!!!
}
Ideally, after running it in debug mode, owing to p1 and p2 are not
deleted, the output window of the IDE should report memory leaks with
source file names and actual line numbers.
Provided that the whole program doesn't use new(nothrow), I can
implement a memory leak detector as follows:
#if _DEBUG
void* operator new(size_t size, char* srcFileName, int nLineNum);
void* operator delete(void* p);
// ......
#define new new(__FILE__, __LINE__)
#endif
However, by using macro, new and new(nothrow) cannot be simultaneouly
supported. My question is: How to implement this feature that can
simultaneously support? Is this feasible?
Thanks in advance for any help.
For example,
#include <My_Debug_New.h>
using namespace std;
int main()
{
int* p1 = new int;
int* p2 = new(nothrow) int; // note this!!!
}
Ideally, after running it in debug mode, owing to p1 and p2 are not
deleted, the output window of the IDE should report memory leaks with
source file names and actual line numbers.
Provided that the whole program doesn't use new(nothrow), I can
implement a memory leak detector as follows:
#if _DEBUG
void* operator new(size_t size, char* srcFileName, int nLineNum);
void* operator delete(void* p);
// ......
#define new new(__FILE__, __LINE__)
#endif
However, by using macro, new and new(nothrow) cannot be simultaneouly
supported. My question is: How to implement this feature that can
simultaneously support? Is this feasible?
Thanks in advance for any help.