Newer
Older
libkc / modules / include / kc_memory_entry.h
/**
 * @file   kc_memory_entry.h
 * @brief  KC メモリ管理 Entry サブモジュール
 * @copyright  2003 - 2023  Nomura Kei
 * @depends
 *	kc.h
 *	kc_memory_mark.h
 *
 * 本ヘッダファイルを直接 include せず、kc_memory.h を include してください。
 */
#ifndef KC_MEMORY_ENTRY_H
#define KC_MEMORY_ENTRY_H

#include <kc.h>
#include <kc_memory_mark.h>

#ifdef __cplusplus
extern "C"
{
    namespace kc
    {
        using namespace std;
#endif

        /**
         * メモリエントリ。
         */
        typedef struct KcMemoryEntry_
        {
            int size;                     //!< 確保サイズ
            KcMemoryMark mark;            //!< 確保メモリ状態
            const char *file;             //!< メモリ確保ファイル名
            const char *func;             //!< メモリ確保関数名
            int line;                     //!< メモリ確保行番号
            struct KcMemoryEntry_ *_prev; //!< 前の管理メモリポインタ
            struct KcMemoryEntry_ *_next; //!< 次の管理メモリポインタ
            void *padding[2];             //!< パディング
            void *data;                   //!< データ
                                          // 構造体末尾の配列に限りサイズ省略可能 (C99 : incomplete array)
        } KcMemoryEntry;

#ifdef __cplusplus
    } // namespace kc
} // extern "C"
#endif
#endif // KC_MEMORY_ENTRY_H