0

我有一堂课:

class WorkerThread
{
public:
    unsigned virtual run()
    {
        return 0;
    }
};

在标题中定义。现在在另一个类中,我创建了一个这种类型的对象:

WorkerThread **workerQueue;

这实际上是一个指向指针的指针......好吧,到目前为止一切都很好。
现在,我应该如何阅读:

workerQueue = new WorkerThread*[maxThreads];

*ClassName( WorkerThread)后面的和数组格式是什么意思?

4

2 回答 2

8

WorkerThread这是一个指针数组的分配。

例如:

size_t maxThreads = 3;
WorkerThread** workerQueue = new WorkerThread*[maxThreads];

workerQueue[0]WorkerThread*,WorkerThread[1]和一样WorkerThread[2]

这些指针,目前还没有被初始化。

稍后您可能会看到如下内容:

for(size_t x = 0; x < maxThreads; ++x)
{
   workerQueue[x] = new WorkerThread(...);

   //beginthreadex_, CreateThread, something....
}

我会告诉你,除非小心处理,否则所有这些原始指针都只是等待发生的内存泄漏。首选方法是使用对象的std::vector某个智能指针WorkerThread

于 2012-12-19T01:59:53.750 回答
2

也许这会让它更清楚地理解:

typedef WorkerThread* PointerToWorkerThread;

PointerToWorkerThread *workerQueue;

workerQueue = new PointerToWorkerThread[maxThreads];
于 2012-12-19T02:30:12.603 回答