我有一堂课:

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


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

WorkerThread **workerQueue;


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

workerQueue = new WorkerThread*[maxThreads];


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

最佳答案

它是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对象的某些智能指针。

09-06 23:01