Why are you using pointers? Given that:
oMO = * g_qMO.front();
copies the object anyway (and hence they are copyable), you might as
well stick with a queue<CMergeObject>. Then you don't need the delete.
You can use swap based idioms if copying is expensive.
std:queue, by default, uses std::deque under the hood. In VC7.1 and
later, IIRC, std::deque does not release segments back to the OS when
you make pop calls, so at any one time, it will consume the memory of
the maximum number of items that have ever been on the queue.
std::string obviously cleans up its own memory when you destroy it, so
that shouldn't be the problem.
Are you sure your leaks are due to this code? Have you used any kind of