acl/lib_acl_cpp/include/acl_cpp/stdlib/malloc.hpp

77 lines
2.0 KiB
C++
Raw Normal View History

#pragma once
2017-06-02 14:47:24 +08:00
#include "../acl_cpp_define.hpp"
2014-11-19 00:25:21 +08:00
#ifdef ACL_HOOK_NEW
2014-11-19 00:25:21 +08:00
# if defined(_WIN32) || defined(_WIN64)
# ifdef NDEBUG
2014-11-19 00:25:21 +08:00
void* operator new(size_t n);
void operator delete(void *p);
# endif
# else
2014-11-19 00:25:21 +08:00
#include <new>
void* operator new(size_t n) throw (std::bad_alloc);
void operator delete(void *p) throw();
# endif
2020-06-12 15:14:26 +08:00
#elif defined(ACL_CPP_DEBUG_MEM)
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> acl <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> new/delete
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٹ<EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󱻴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>б<EFBFBD><EFBFBD>ͷţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ
* һ<EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>й<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD>Զ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>
2020-06-12 15:14:26 +08:00
* <EFBFBD><EFBFBD><EFBFBD>ͷţ<EFBFBD>Ҫ<EFBFBD><EFBFBD>ʹ<EFBFBD>ô˹<EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> lib_acl_cpp/include/acl_cpp/acl_cpp_define.hpp
* <EFBFBD>еĺ<EFBFBD> "//#define ACL_CPP_DEBUG_MEM" <EFBFBD>򿪣<EFBFBD>ͬʱӦ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD><EFBFBD><EFBFBD>
* ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
* #include "acl_cpp/stdlib/malloc.hpp
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱӦʹ<EFBFBD><EFBFBD> NEW <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> new.
*/
2020-06-12 15:37:11 +08:00
void* operator new(size_t, const char*, const char*, int) throw();
void operator delete(void*) throw();
void operator delete(void*, size_t) throw();
#define NEW new(__FILE__, __FUNCTION__, __LINE__)
namespace acl {
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ع<EFBFBD><EFBFBD><EFBFBD>
*/
2021-01-18 17:14:30 +08:00
ACL_CPP_API void mem_checker_start(const char* logfile = NULL);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ڴ<EFBFBD>״̬<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ô˺<EFBFBD><EFBFBD><EFBFBD>
*/
2020-06-13 10:54:34 +08:00
ACL_CPP_API void mem_checker_show(void);
}
2014-11-19 00:25:21 +08:00
#endif
namespace acl {
ACL_CPP_API void acl_slice_init(void);
/**
* <EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param size {size_t} <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijߴ<EFBFBD><EFBFBD><EFBFBD>С
* @param filename {const char*} Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param funcname {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lineno {int} Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
* @return {void*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>abort
2014-11-19 00:25:21 +08:00
*/
ACL_CPP_API void* acl_new(size_t size, const char* filename,
const char* funcname, int lineno);
/**
* <EFBFBD>ͷ<EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>
* @param ptr {void*} <EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ַ
* @param filename {const char*} Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param funcname {const char*} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param lineno {int} Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
2014-11-19 00:25:21 +08:00
*/
ACL_CPP_API void acl_delete(void *ptr, const char* filename,
const char* funcname, int lineno);
}