一個簡單的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進行開發,可以繼承該類,然後重載析構函數,使其不在控制檯輸出文本即可。
寫的不多,亦不深入,只是小菜的學習筆記。歡迎大家交流。