我有一堂课:
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
对象的某些智能指针。