gpt4 book ai didi

c++ - Webkit中的deleteOwnedPtr函数看不懂

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:04 25 4
gpt4 key购买 nike

在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

If we delete a pointer and the object has incomplete type, we get undefined behavior. Instead this code causes compilation to fail if the object has incomplete type. The use of a negative number for the size of an array is a way to guarantee we get a compilation error.

关于c++ - Webkit中的deleteOwnedPtr函数看不懂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com