这种基础c++用法是否会产生有关问题

这种基础c++用法是否会产生问题
向大家请教一个问题:
假设有如下定义:

struct   Mutex
{
      static   void*   createMutex(   void   );
      static   void   destroyMutex(   void*   );
      static   bool   lockMutex(   void   *mutex,   bool   block   =   true);
      static   void   unlockMutex(   void*   );
};

///////////
void   *   Mutex::createMutex()
{
      CRITICAL_SECTION   *   mutex   =   new   CRITICAL_SECTION;
      InitializeCriticalSection(mutex);
      return((void*)mutex);
}

void   Mutex::destroyMutex(void   *   mutex)
{
      AssertFatal(mutex,   "Mutex::destroyMutex:   invalid   mutex ");
      DeleteCriticalSection((CRITICAL_SECTION*)mutex);
      delete   mutex;
}
//针对以上定义有如下的调用:


void   *gEventQueueMutex;
gEventQueueMutex=   Mutex::createMutex();

....

我们可以发现Mutex::createMutex用的是一个局部指针mutex   ,后边有个return((void*)mutex);把这个局部指针返了回去,我想知道的是把这种局部指针返回去的做法是否有问题或者隐患,请各位高手给以指点
,十分感谢!




------解决方案--------------------
不会出现任何问题。楼主对值传递和引用传递的概念不清楚,建议把谭浩强的那本入门书上的习题都搞懂了,在进行实际编程工作,要不然会被烦死的。
------解决方案--------------------
当然不会有问题,因为虽然返回的是局部指针,实际上返回的是指针所指的地址,而这个地址是动态申请的,不是局部变量的地址,并不会随着函数的结束而释放,所以地址里的数据仍然是有效的
------解决方案--------------------
不会有问题
------解决方案--------------------
这样做,需要在外部保存void * Mutex::createMutex()
{
CRITICAL_SECTION * mutex = new CRITICAL_SECTION;
InitializeCriticalSection(mutex);
return((void*)mutex);
}
函数传递的指针,如果保存忘记,就可能产生内存泄露

lz可以考虑采用RTTI方式,这样设计mutex
struct Mutex
{
Mutex()
{
mutex = new CRITICAL_SECTION;
InitializeCriticalSection(mutex);
}
~Mutex()
{
AssertFatal(mutex, "Mutex::destroyMutex: invalid mutex ");
DeleteCriticalSection((CRITICAL_SECTION*)mutex);
delete mutex;
}
bool lockMutex( void *mutex, bool block = true);
void unlockMutex( void* );
private:
CRITICAL_SECTION * mutex;
};