Cos*_*ait 0 c++ arrays pointers
我有一节课:
class WorkerThread
{
public:
unsigned virtual run()
{
return 0;
}
};
Run Code Online (Sandbox Code Playgroud)
在标题中定义.现在在另一个类中,我创建了一个这种类型的对象:
WorkerThread **workerQueue;
Run Code Online (Sandbox Code Playgroud)
这实际上是一个指向指针的指针......好吧,直到现在都很好.
现在,我该怎么读这个:
workerQueue = new WorkerThread*[maxThreads];
Run Code Online (Sandbox Code Playgroud)
*ClassName(WorkerThread)和数组格式之后是什么意思?
它是一个WorkerThread指针数组的分配.
例如:
size_t maxThreads = 3;
WorkerThread** workerQueue = new WorkerThread*[maxThreads];
Run Code Online (Sandbox Code Playgroud)
workerQueue[0]是一个WorkerThread*,原样WorkerThread[1]和WorkerThread[2].
这些指针目前尚未初始化.
稍后您可能会看到以下内容:
for(size_t x = 0; x < maxThreads; ++x)
{
workerQueue[x] = new WorkerThread(...);
//beginthreadex_, CreateThread, something....
}
Run Code Online (Sandbox Code Playgroud)
我会告诉你,所有这些原始指针只是内存泄漏等待发生,除非仔细处理.一种优选的方法是使用std::vector一些WorkerThread对象的智能指针.