📄 mpatrol.h
字号:
/* The details of a single memory allocation. */typedef struct __mp_allocinfo{ void *block; /* pointer to block of memory */ size_t size; /* size of block of memory */ __mp_alloctype type; /* type of memory allocation */ unsigned long alloc; /* allocation index */ unsigned long realloc; /* reallocation index */ unsigned long thread; /* thread identifier */ unsigned long event; /* event of last modification */ char *func; /* calling function name */ char *file; /* file name in which call took place */ unsigned long line; /* line number at which call took place */ __mp_allocstack *stack; /* call stack details */ char *typestr; /* type stored in allocation */ size_t typesize; /* size of type stored in allocation */ void *userdata; /* user data associated with allocation */ int allocated : 1; /* allocation was allocated */ int freed : 1; /* allocation has been freed */ int marked : 1; /* allocation has been marked */ int profiled : 1; /* allocation has been profiled */ int traced : 1; /* allocation has been traced */ int internal : 1; /* allocation is internal */}__mp_allocinfo;/* The details of a particular function symbol. */typedef struct __mp_symbolinfo{ char *name; /* symbol name */ char *object; /* module symbol located in */ void *addr; /* start address */ size_t size; /* size of symbol */ char *file; /* file name corresponding to address */ unsigned long line; /* line number corresponding to address */}__mp_symbolinfo;/* The details of the current heap state. */typedef struct __mp_heapinfo{ size_t acount; /* total number of allocated blocks */ size_t atotal; /* total size of allocated blocks */ size_t fcount; /* total number of free blocks */ size_t ftotal; /* total size of free blocks */ size_t gcount; /* total number of freed blocks */ size_t gtotal; /* total size of freed blocks */ size_t icount; /* total number of internal blocks */ size_t itotal; /* total size of internal blocks */ size_t mcount; /* total number of marked blocks */ size_t mtotal; /* total size of marked blocks */}__mp_heapinfo;/* The structure filled by mallinfo(). */struct mallinfo{ unsigned long arena; /* total space in arena */ unsigned long ordblks; /* number of ordinary blocks */ unsigned long smblks; /* number of small blocks */ unsigned long hblks; /* number of holding blocks */ unsigned long hblkhd; /* space in holding block headers */ unsigned long usmblks; /* space in small blocks in use */ unsigned long fsmblks; /* space in free small blocks */ unsigned long uordblks; /* space in ordinary blocks in use */ unsigned long fordblks; /* space in free ordinary blocks */ unsigned long keepcost; /* cost of enabling keep option */};#ifndef NDEBUG#ifdef malloc#undef malloc#endif /* malloc */#ifdef calloc#undef calloc#endif /* calloc */#ifdef memalign#undef memalign#endif /* memalign */#ifdef valloc#undef valloc#endif /* valloc */#ifdef pvalloc#undef pvalloc#endif /* pvalloc */#ifdef alloca#undef alloca#endif /* alloca */#ifdef strdup#undef strdup#endif /* strdup */#ifdef strndup#undef strndup#endif /* strndup */#ifdef strsave#undef strsave#endif /* strsave */#ifdef strnsave#undef strnsave#endif /* strnsave */#ifdef strdupa#undef strdupa#endif /* strdupa */#ifdef strndupa#undef strndupa#endif /* strndupa */#ifdef realloc#undef realloc#endif /* realloc */#ifdef reallocf#undef reallocf#endif /* reallocf */#ifdef recalloc#undef recalloc#endif /* recalloc */#ifdef expand#undef expand#endif /* expand */#ifdef free#undef free#endif /* free */#ifdef cfree#undef cfree#endif /* cfree */#ifdef dealloca#undef dealloca#endif /* dealloca */#ifdef xmalloc#undef xmalloc#endif /* xmalloc */#ifdef xcalloc#undef xcalloc#endif /* xcalloc */#ifdef xstrdup#undef xstrdup#endif /* xstrdup */#ifdef xrealloc#undef xrealloc#endif /* xrealloc */#ifdef xfree#undef xfree#endif /* xfree */#ifdef memset#undef memset#endif /* memset */#ifdef bzero#undef bzero#endif /* bzero */#ifdef memccpy#undef memccpy#endif /* memccpy */#ifdef memcpy#undef memcpy#endif /* memcpy */#ifdef memmove#undef memmove#endif /* memmove */#ifdef bcopy#undef bcopy#endif /* bcopy */#ifdef memchr#undef memchr#endif /* memchr */#ifdef memmem#undef memmem#endif /* memmem */#ifdef memcmp#undef memcmp#endif /* memcmp */#ifdef bcmp#undef bcmp#endif /* bcmp */#ifdef MP_MALLOC#undef MP_MALLOC#endif /* MP_MALLOC */#ifdef MP_CALLOC#undef MP_CALLOC#endif /* MP_CALLOC */#ifdef MP_STRDUP#undef MP_STRDUP#endif /* MP_STRDUP */#ifdef MP_REALLOC#undef MP_REALLOC#endif /* MP_REALLOC */#ifdef MP_FREE#undef MP_FREE#endif /* MP_FREE */#ifdef MP_FAILURE#undef MP_FAILURE#endif /* MP_FAILURE */#if !MP_NOCPLUSPLUS#ifdef __cplusplus#if MP_NONEWDELETE#ifdef MP_NEW#undef MP_NEW#endif /* MP_NEW */#ifdef MP_NEW_NOTHROW#undef MP_NEW_NOTHROW#endif /* MP_NEW_NOTHROW */#ifdef MP_DELETE#undef MP_DELETE#endif /* MP_DELETE */#else /* MP_NONEWDELETE */#ifdef new#undef new#endif /* new */#ifdef delete#undef delete#endif /* delete */#endif /* MP_NONEWDELETE */#endif /* __cplusplus */#endif /* MP_NOCPLUSPLUS */#define malloc(l) \ __mp_alloc((l), 0, MP_AT_MALLOC, MP_FUNCNAME, __FILE__, __LINE__, NULL, 0, \ 0)#define calloc(l, n) \ __mp_alloc((l) * (n), 0, MP_AT_CALLOC, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define memalign(a, l) \ __mp_alloc((l), (a), MP_AT_MEMALIGN, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define valloc(l) \ __mp_alloc((l), 0, MP_AT_VALLOC, MP_FUNCNAME, __FILE__, __LINE__, NULL, 0, \ 0)#define pvalloc(l) \ __mp_alloc((l), 0, MP_AT_PVALLOC, MP_FUNCNAME, __FILE__, __LINE__, NULL, \ 0, 0)#define alloca(l) \ __mp_alloc((l), 0, MP_AT_ALLOCA, MP_FUNCNAME, __FILE__, __LINE__, NULL, 0, \ 0)#define strdup(p) \ __mp_strdup((p), 0, MP_AT_STRDUP, MP_FUNCNAME, __FILE__, __LINE__, 0)#define strndup(p, l) \ __mp_strdup((p), (l), MP_AT_STRNDUP, MP_FUNCNAME, __FILE__, __LINE__, 0)#define strsave(p) \ __mp_strdup((p), 0, MP_AT_STRSAVE, MP_FUNCNAME, __FILE__, __LINE__, 0)#define strnsave(p, l) \ __mp_strdup((p), (l), MP_AT_STRNSAVE, MP_FUNCNAME, __FILE__, __LINE__, 0)#define strdupa(p) \ __mp_strdup((p), 0, MP_AT_STRDUPA, MP_FUNCNAME, __FILE__, __LINE__, 0)#define strndupa(p, l) \ __mp_strdup((p), (l), MP_AT_STRNDUPA, MP_FUNCNAME, __FILE__, __LINE__, 0)#define realloc(p, l) \ __mp_realloc((p), (l), 0, MP_AT_REALLOC, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define reallocf(p, l) \ __mp_realloc((p), (l), 0, MP_AT_REALLOCF, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define recalloc(p, l, n) \ __mp_realloc((p), (l) * (n), 0, MP_AT_RECALLOC, MP_FUNCNAME, __FILE__, \ __LINE__, NULL, 0, 0)#define expand(p, l) \ __mp_realloc((p), (l), 0, MP_AT_EXPAND, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define free(p) \ __mp_free((p), MP_AT_FREE, MP_FUNCNAME, __FILE__, __LINE__, 0)#define cfree(p, l, n) \ __mp_free((p), MP_AT_CFREE, MP_FUNCNAME, __FILE__, __LINE__, 0)#define dealloca(p) \ __mp_free((p), MP_AT_DEALLOCA, MP_FUNCNAME, __FILE__, __LINE__, 0)#define xmalloc(l) \ __mp_alloc((l), 0, MP_AT_XMALLOC, MP_FUNCNAME, __FILE__, __LINE__, NULL, \ 0, 0)#define xcalloc(l, n) \ __mp_alloc((l) * (n), 0, MP_AT_XCALLOC, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define xstrdup(p) \ __mp_strdup((p), 0, MP_AT_XSTRDUP, MP_FUNCNAME, __FILE__, __LINE__, 0)#define xrealloc(p, l) \ __mp_realloc((p), (l), 0, MP_AT_XREALLOC, MP_FUNCNAME, __FILE__, __LINE__, \ NULL, 0, 0)#define xfree(p) \ __mp_free((p), MP_AT_XFREE, MP_FUNCNAME, __FILE__, __LINE__, 0)#define memset(p, c, l) \ __mp_setmem((p), (l), (unsigned char) (c), MP_AT_MEMSET, MP_FUNCNAME, \ __FILE__, __LINE__, 0)#define bzero(p, l) \ (void) __mp_setmem((p), (l), 0, MP_AT_BZERO, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define memccpy(q, p, c, l) \ __mp_copymem((p), (q), (l), (unsigned char) (c), MP_AT_MEMCCPY, \ MP_FUNCNAME, __FILE__, __LINE__, 0)#define memcpy(q, p, l) \ __mp_copymem((p), (q), (l), 0, MP_AT_MEMCPY, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define memmove(q, p, l) \ __mp_copymem((p), (q), (l), 0, MP_AT_MEMMOVE, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define bcopy(p, q, l) \ (void) __mp_copymem((p), (q), (l), 0, MP_AT_BCOPY, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define memchr(p, c, l) \ __mp_locatemem((p), (l), NULL, (size_t) (c), MP_AT_MEMCHR, MP_FUNCNAME, \ __FILE__, __LINE__, 0)#define memmem(p, l, q, m) \ __mp_locatemem((p), (l), (q), (m), MP_AT_MEMMEM, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define memcmp(p, q, l) \ __mp_comparemem((p), (q), (l), MP_AT_MEMCMP, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define bcmp(p, q, l) \ __mp_comparemem((p), (q), (l), MP_AT_BCMP, MP_FUNCNAME, __FILE__, \ __LINE__, 0)#define MP_MALLOC(p, l, t) \ (p = (t *) __mp_alloc((l) * sizeof(t), MP_ALIGN(t), MP_AT_XMALLOC, \ MP_FUNCNAME, __FILE__, __LINE__, #t, sizeof(t), 0))#define MP_CALLOC(p, l, t) \ (p = (t *) __mp_alloc((l) * sizeof(t), MP_ALIGN(t), MP_AT_XCALLOC, \ MP_FUNCNAME, __FILE__, __LINE__, #t, sizeof(t), 0))#define MP_STRDUP(p, s) \ (p = __mp_strdup((s), 0, MP_AT_XSTRDUP, MP_FUNCNAME, __FILE__, __LINE__, 0))#define MP_REALLOC(p, l, t) \ (p = (t *) __mp_realloc((p), (l) * sizeof(t), MP_ALIGN(t), MP_AT_XREALLOC, \ MP_FUNCNAME, __FILE__, __LINE__, #t, sizeof(t), 0))#define MP_FREE(p) \ do { __mp_free((p), MP_AT_XFREE, MP_FUNCNAME, __FILE__, __LINE__, 0); \ p = NULL; } while (0)#define MP_FAILURE(f) ((__mp_failhandler) NULL)#define __mp_check() \ __mp_checkheap(MP_FUNCNAME, __FILE__, __LINE__)#define __mp_vlocprintf(m, v) \ __mp_vprintfwithloc(MP_FUNCNAME, __FILE__, __LINE__, (m), (v))#ifdef __cplusplusextern "C"{#endif /* __cplusplus */extern __mp_errortype __mp_errno;void __mp_init(void);void __mp_reinit(void);void __mp_fini(void);int __mp_atexit(void (*)(void));unsigned long __mp_setoption(long, unsigned long);int __mp_getoption(long, unsigned long *);void *__mp_alloc(size_t, size_t, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, MP_CONST char *, size_t, size_t);char *__mp_strdup(MP_CONST char *, size_t, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);void *__mp_realloc(void *, size_t, size_t, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, MP_CONST char *, size_t, size_t);void __mp_free(void *, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);void *__mp_setmem(void *, size_t, unsigned char, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);void *__mp_copymem(MP_CONST void *, void *, size_t, unsigned char, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);void *__mp_locatemem(MP_CONST void *, size_t, MP_CONST void *, size_t, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);int __mp_comparemem(MP_CONST void *, MP_CONST void *, size_t, __mp_alloctype, MP_CONST char *, MP_CONST char *, unsigned long, size_t);unsigned long __mp_libversion(void);MP_CONST char *__mp_strerror(__mp_errortype);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -