簡體   English   中英

我無法理解Webkit中的deleteOwnedPtr函數

[英]I can't understand the deleteOwnedPtr function in Webkit

在Webkit中找到此功能

template<typename T> inline void deleteOwnedPtr(T* ptr)
{
    typedef char known[sizeof(T) ? 1 : -1];
    if(sizeof(known))
        delete ptr;
}

他們為什么不使用

if (sizeof(T))
    delete ptr;

這是什么意思

char known[-1];

在webkit-dev郵件列表中找到了說明。 如果有人試圖刪除不完整的類型,則會引起編譯器錯誤。

https://lists.webkit.org/pipermail/webkit-dev/2010-November/015051.html

如果刪除指針,並且對象的類型不完整,則會得到未定義的行為。 相反,如果對象的類型不完整,此代碼將導致編譯失敗。 對數組的大小使用負數是一種保證我們得到編譯錯誤的方法。

暫無
暫無

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

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