[英]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.