6
根據Qt文檔:刪除時,QObject會區分堆棧和堆分配的子項嗎?
QObject將自己組織在對象樹中。當您創建一個 QObject與另一個對象作爲父對象時,該對象將自動將其自身添加到父級的children()列表中。父母取得對象的所有權 ;即它會自動刪除它的子對象在它的 析構函數中。
對於我來說,這意味着當一個QObject被刪除時,它會通過並調用刪除它存儲在其子列表中的所有指針。
但是,對於孩子來說,動態分配並不是必要的,並且使用堆棧分配對象來構建QObject樹是完全合法的。
根據標準規範,對不指向動態分配對象的指針調用delete是未定義行爲,這可能導致任何內容從「無」到程序崩潰。
IMO它不太可能QObject,它幾乎是Qt類的幾乎整個集合的骨幹依賴於可能產生未定義行爲的東西。
那麼,QObject在刪除時是否區分堆棧和堆分配的子項?如果是這樣,怎麼樣?
是的,應該先看看析構函數,然後再問全部... 10x – dtech
一些有趣的相關主題:在堆棧中分配根QObject;一切(兒童)堆上https://stackoverflow.com/questions/19331396/how-does-qt-delete-objects-and-what-is-the-best-way-to-store-qobjects?rq= 1 –