123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- #ifndef KMP_WRAPPER_MALLOC_H
- #define KMP_WRAPPER_MALLOC_H
- #include <stdlib.h>
- #include "kmp_os.h"
- #if KMP_OS_WINDOWS
- #include <malloc.h> // Windows* OS: _alloca() declared in "malloc.h".
- #if KMP_MSVC_COMPAT
- #define alloca _alloca
- #endif
- #elif KMP_OS_DRAGONFLY || KMP_OS_FREEBSD || KMP_OS_NETBSD || KMP_OS_OPENBSD
- #elif KMP_OS_UNIX
- #include <alloca.h> // Linux* OS and OS X*: alloc() declared in "alloca".
- #else
- #error Unknown or unsupported OS.
- #endif
- #if KMP_DEBUG
- #define KMP_SRC_LOC_DECL , char const *_file_, int _line_
- #define KMP_SRC_LOC_PARM , _file_, _line_
- #define KMP_SRC_LOC_CURR , __FILE__, __LINE__
- #else
- #define KMP_SRC_LOC_DECL
- #define KMP_SRC_LOC_PARM
- #define KMP_SRC_LOC_CURR
- #endif
- #define malloc_src_loc(args) _malloc_src_loc(args)
- #define free_src_loc(args) _free_src_loc(args)
- #if KMP_DEBUG
- #if KMP_OS_WINDOWS && _DEBUG
- #include <crtdbg.h>
- #define KMP_MEM_BLOCK _CLIENT_BLOCK
- #define malloc(size) _malloc_dbg((size), KMP_MEM_BLOCK, __FILE__, __LINE__)
- #define calloc(num, size) \
- _calloc_dbg((num), (size), KMP_MEM_BLOCK, __FILE__, __LINE__)
- #define realloc(ptr, size) \
- _realloc_dbg((ptr), (size), KMP_MEM_BLOCK, __FILE__, __LINE__)
- #define free(ptr) _free_dbg((ptr), KMP_MEM_BLOCK)
- #define _malloc_src_loc(size, file, line) \
- _malloc_dbg((size), KMP_MEM_BLOCK, (file), (line))
- #define _free_src_loc(ptr, file, line) _free_dbg((ptr), KMP_MEM_BLOCK)
- #else
- #define _malloc_src_loc(size, file, line) malloc((size))
- #define _free_src_loc(ptr, file, line) free((ptr))
- #endif
- #else
- #define _malloc_src_loc(size) malloc((size))
- #define _free_src_loc(ptr) free((ptr))
- #endif
- #endif
|