簡體   English   中英

“新類名* []”是什么意思?

[英]What does “new Classname*[]” mean?

我有一堂課:

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

在標題中定義。 現在在另一個類中,創建這種類型的對象:

WorkerThread **workerQueue;

實際上是指向指針的指針...好吧,到目前為止一切都很好。
現在,我應該如何閱讀:

workerQueue = new WorkerThread*[maxThreads];

ClassName( WorkerThread )和數組格式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對象的某些智能指針。

也許這會使您更清楚地了解:

typedef WorkerThread* PointerToWorkerThread;

PointerToWorkerThread *workerQueue;

workerQueue = new PointerToWorkerThread[maxThreads];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM