vegaprime自帶例子學習筆記(1)

一個簡單的vp例子

#include <vsgu.h>
#include <vp.h>
#include <vpApp.h>
#include "vuAllocTracer.h"
vuAllocTracer tracer(true, true);

int main(int argc, char *argv[])
{
    // initialize vega prime
    vp::initialize(argc, argv);

    // initialize addition modules here
    //vpModule::initializeModule(modulename);

    // create a vpApp instance
    vpApp *app = new vpApp;

    // load acf file
    if (argc <= 1)
        app->define("vp_simple.acf");
    else
        app->define(argv[1]);
       
    // configure my app
    app->configure();

    // runtime loop
    app->run();
   
    // unref my app instance
    app->unref();
   
    // shutdown vega prime
    vp::shutdown();

    return 0;
}

下面主要是說說關於vuAllocTracer類。

    vegaprime主要是基於VSG開發。VSG全稱vega scene graph,是一套完整的api接口。VSG由三部分組成,分別是VSGU,VSGR和VSGS。其中VSGU主要是負責內存和文件的操作。VSGU還自帶了一套多線程控制機制,如多線程之間臨界區操作,以避免死鎖的發生。當然,如果你喜歡使用C++/ISO的文件操作,喜歡使用自己的臨界區代碼及文件操作也是可以的。但通過對VSGU的例子的閱讀,發現它帶的類庫還是比C++/CLI的好用的多的。

    之所以說了這麼多,就是因爲vuAllocTracer就是來自於VSGU。這個類的主要功能是爲了檢查內存泄漏。從vuAllocTracer的代碼中可以看到其實現原理主要是在vuAllocTracer實例的構造函數和析構函數中獲取分配的內存值,然後做差,以實現檢測內存是否泄漏的目的。在vuAllocTracer析構函數中通過向屏幕輸出,以報告用戶的代碼中是否產生內存泄漏。如果是基於MFC進行開發,可以繼承該類,然後重載析構函數,使其不在控制檯輸出文本即可。

寫的不多,亦不深入,只是小菜的學習筆記。歡迎大家交流。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章