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