1
0
This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
TP-Link_Archer-XR500v/EN7526G_3.18Kernel_SDK/apps/public/tools/dmalloc-5.5.2/dmallocc.cc
2024-07-22 01:58:46 -03:00

90 lines
2.2 KiB
C++
Executable File

/*
* File that facilitates C++ program debugging.
*
* Copyright 2000 by Gray Watson
*
* This file is part of the dmalloc package.
*
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies, and that the name of Gray Watson not be used in advertising
* or publicity pertaining to distribution of the document or software
* without specific, written prior permission.
*
* Gray Watson makes no representations about the suitability of the
* software described herein for any purpose. It is provided "as is"
* without express or implied warranty.
*
* The author may be contacted via http://dmalloc.com/
*
* $Id: //BBN_Linux/Branch/Branch_for_Rel_TP_ASEAN_20161216/tclinux_phoenix/apps/public/tools/dmalloc-5.5.2/dmallocc.cc#1 $
*/
/*
* This file is used to effectively redirect new to the more familiar
* malloc and delete to the more familiar free so they can be debugged
* with the debug malloc library.. They also give the known error
* behavior, too.
*
* Compile and link this in with the C++ program you want to debug.
*
* NOTE: I am not a C++ hacker so feedback in the form of other hints
* and ideas for C++ users would be much appreciated.
*/
extern "C" {
#include <stdlib.h>
#define DMALLOC_DISABLE
#include "dmalloc.h"
#include "return.h"
}
/*
* An overload function for the C++ new.
*/
void *
operator new(size_t size)
{
char *file;
GET_RET_ADDR(file);
return dmalloc_malloc(file, 0, size, DMALLOC_FUNC_NEW,
0 /* no alignment */, 0 /* no xalloc messages */);
}
/*
* An overload function for the C++ new[].
*/
void *
operator new[](size_t size)
{
char *file;
GET_RET_ADDR(file);
return dmalloc_malloc(file, 0, size, DMALLOC_FUNC_NEW_ARRAY,
0 /* no alignment */, 0 /* no xalloc messages */);
}
/*
* An overload function for the C++ delete.
*/
void
operator delete(void *pnt)
{
char *file;
GET_RET_ADDR(file);
dmalloc_free(file, 0, pnt, DMALLOC_FUNC_DELETE);
}
/*
* An overload function for the C++ delete[]. Thanks to Jens Krinke.
*/
void
operator delete[](void *pnt)
{
char *file;
GET_RET_ADDR(file);
dmalloc_free(file, 0, pnt, DMALLOC_FUNC_DELETE_ARRAY);
}