Mail: Pass:
前月  2008年6月  翌月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

links

 びびすけさんのページ
 体重・走距離分析
 月間・靴・コース走距離
 タイムトライアル分析
 速度・心拍数分析
 自転車・月間・コース走距離
 オセロ勝敗・レート分析
 ViVi web site

新着日記

 はじめての AIR プログラム(汎用…
 モカ将棋 0.005 リリース
 座標がずれる
 壁にぶちあたった
 Laramie V1 に勝ち越し!
 vs Laramie V1 10番勝負
 モカ将棋10番勝負 (2)
 開発マシンが死んだ!?
 vs Lesserkai 1.3.2 10番勝負
 TJshogi にも初勝利
 Lesserkai 1.3.2 (1秒)に初勝利!
 将棋大会 地区予選
 プレイアウト結果の信頼性
 vs ランダム将棋
 moca将棋
 ViVi 2.05

新着コメント

 無題/ひらた
 直った/びびすけ
 vs Laramie V2/びびすけ
 vs LaramieV1 10…/びびすけ
 vs TJshogi 0.03…/びびすけ
 vs ランダム将…/びびすけ
 vs TJshogi 0.03/びびすけ
 羽生×山崎/びびすけ
 ボナ×渡辺竜王/びびすけ
 羽生×山崎 戦/びびすけ

トラックバック

トラックバックはありません。

カテゴリ一覧

 基本データ
 テニス
 ジョギング
 ViVi
 自転車
 Web
 RunRunDietOnline
 PostgreSQL
 ビルドアップ走
 ランニング

循環参照によるメモリリーク (2) (2008/06/20 16:01)

次に循環参照を作ってメモリリークが発生することを確認してみる

[1] 自分自身で循環参照している場合:
    cout << "\n子オブジェクト設定(循環参照):\n";
    {
        cout << "obj1 生成 ";
        CRCObject obj1;
        cout << "obj1 を obj1 の子供に設定 ";
        obj1.setChild1(obj1);
        cout << "設定終わり\n";
    }

実行結果:
子オブジェクト設定(循環参照):
obj1 生成 alloced 4331952
obj1 を obj1 の子供に設定 設定終わり

[2] 2つのオブジェクトが循環参照している場合:
    cout << "\n子オブジェクト設定(循環参照2):\n";
    {
        cout << "obj1 生成 ";
        CRCObject obj1;
        cout << "obj2 生成 ";
        CRCObject obj2;
        cout << "obj2 を obj1 の子供に設定 ";
        obj1.setChild1(obj2);
        cout << "設定終わり\n";
        cout << "obj1 を obj2 の子供に設定 ";
        obj2.setChild1(obj1);
        cout << "設定終わり\n";
    }

実行結果:
子オブジェクト設定(循環参照2):
obj1 生成 alloced 4331616
obj2 生成 alloced 4331328
obj2 を obj1 の子供に設定 設定終わり
obj1 を obj2 の子供に設定 設定終わり

=====
上記のように、循環参照していると確かにオブジェクト本体のメモリが開放されないことが確認できた。



コメント:

パス ← 半角英字で「abc」と入力してください。
名前
タイトル
コメント

( page views in recent 7 days)

パスワード忘れ
今週のランキング
計算タマちゃん
FAQ
ヘルプ
about rrdOnline