gpt4 book ai didi

c++ - "new Classname*[]"是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:08 26 4
gpt4 key购买 nike

我有一个类:

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

关于c++ - "new Classname*[]"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13944492/

26 4 0