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进行开发,可以继承该类,然后重载析构函数,使其不在控制台输出文本即可。

写的不多,亦不深入,只是小菜的学习笔记。欢迎大家交流。


你可能感兴趣的:(多线程,C++,api,File,Graph,mfc)