CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
common_MemoryLeakChecker.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/common/common_Definitions.h>
17 
18 
19 namespace nn
20 {
21 namespace pia
22 {
23 namespace common
24 {
25 
26 
27 /*!
28  @brief Pia ライブラリ内部のメモリリークを自動検出するためのクラスです。
29 
30  */
32 {
33 public:
34  /*!
35  @brief コンストラクタです。
36  */
37  MemoryLeakChecker(void);
38 
39 
40  /*!
41  @brief デストラクタです。
42  */
43  ~MemoryLeakChecker(void);
44 
45 
46  /*!
47  @brief メモリリーク調査の起点をセットします。
48 
49  @details この API は、メモリリークを疑う Pia モジュールの初期化処理を開始する前に
50  呼び出すことを想定しています。Pia は最初に common モジュールを初期化し、
51  順に上位モジュールの初期化処理を実行していく設計となっておりますが、
52  仮に Pia の xxx モジュールを含む上位モジュールでのメモリリークを疑う場合、
53  nn::pia::xxx::Initialize() を呼び出す前にこの API を実行する必要があります。
54  @details この API は、各モジュールの BeginSetup() ~ EndSetup() 間では
55  呼び出してはいけません。
56 
57  @return 呼び出しが無事に完了すれば、成功の Result が返されます。
58  @retval ResultNotInitialized nn::pia::common::Initialize が呼ばれていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
59  @retval ResultInvalidState このAPIを呼び出すタイミングが誤っています。 nn::pia::common::EndSetup() の後で呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
60 
61  @see Check
62  */
63  Result Set(void);
64 
65 
66  /*!
67  @brief メモリリークが発生したかどうかの判定を行います。
68 
69  @details この API は、メモリリークを疑う Pia モジュールの終了処理を終えた後に
70  呼び出すことを想定しています。Pia は最上位のモジュールから順に
71  終了処理を実行していく設計となっておりますが、
72  仮に Pia の xxx モジュールを含む上位モジュールでのメモリリークを疑う場合、
73  nn::pia::xxx::Finalize() を呼び出した後にこの API を実行する必要があります。
74  @details このAPIは、各モジュールの BeginSetup() ~ EndSetup() 間では
75  呼び出してはいけません。
76 
77  @return 呼び出しが無事に完了し、メモリリークの疑いが無ければ、成功の Result が返されます。
78  @retval ResultMemoryLeak メモリリークの疑いがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
79  @retval ResultNotInitialized nn::pia::common::Initialize() が呼ばれていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
80  @retval ResultInvalidState このAPIを呼び出すタイミングが誤っています。 nn::pia::common::EndSetup() の後で呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
81 
82  @see Set
83  */
84  Result Check(void) const;
85 
86 
87 private:
88  // 空きメモリの容量を保持。
89  uint32_t m_FreeSize;
90 
91  NN_PIA_DISALLOW_COPY(MemoryLeakChecker);
92 };
93 }
94 }
95 } // end of namespace nn::pia::common