physX 的内存管理

  当初始化 SDK 时,可以指定一个用户定义的内存管理类。这个机制对于 PC 开发来说,效果不是很明显,它适合用在有特殊内存需求的系统中。其次允许监控 SDK 的内存使用,这点在很多时候非常重要。

  为了让 SDK 使用你自己的内存分配函数来代替标准 C 的 malloc/realloc/free,你需要从 NxUserAllocator派生一个类,实现所有的纯虚函数。 这些函数主要是 C 运行时的 malloc/realloc/free,所以当你第一次尝试的时候可以调用这些函数。下面是一个实现示例。SDK 不保证一些真实专用分配器的特殊用法。很多情况下,SDK 会在启动的时候使用你的分配器分配一大块内存,然后在这中间来处理内部的内存分配请求。

你定义的分配器会在启动的时候作为第二个可选参数传递给 NxCreatePhysicsSDK() 函数。当你创建了 SDK,没有办法更改或者移除分配器。

注意:分配器内部不应调用 SDK 的函数。

 class MyAllocator : public NxUserAllocator
 {   
 public:
         void * malloc(NxU32 size)
         {
             return ::malloc(size);
         }
  void * mallocDEBUG(NxU32 size,const char *fileName, int line)
  {
   return ::_malloc_dbg(size,_NORMAL_BLOCK, fileName, line);
  }
  void * realloc(void * memory, NxU32 size)
  {
   return ::realloc(memory,size);
  }
  void free(void * memory)
  {
   ::free(memory);
  }
 } myAllocator;
 gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION, &myAllocator, 0);

线程
当它被用户线程或者物理处理线程的上下文设备中调用的时候,用户要确保分配器的线程安全。一般,系统提供的/ C 库的内存分配例程都是线程安全的,除非用户链接了一个特殊的单线程 C 运行库(这时需要线程同步)。

API 参考
NxUserAllocator  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值