gpt4 book ai didi

c++ - 它有什么作用*((T**)m_ptr)?

转载 作者:行者123 更新时间:2023-11-30 20:58:57 26 4
gpt4 key购买 nike

我在代码中看到了这一点,但无法理解这里发生了什么:

T * ptr; // we have some pointer and it has proper adress
...
// Later I see this and I can't understand what is going here
ptr = *((T **)ptr);

此外,稍后在代码中我看到 *((T**)ptr) = m_address;

这个结构使用了什么? *((T**)ptr)

谢谢!

最佳答案

这意味着作者希望他们写成 T** ptr ,并且通过将指针强制转换为与实际情况不同的类型来绕过他们没有这样做的事实。在取消引用之前用, 声明。它假装 ptr 指向 T** 而不是 T*

在某些情况下,此type punning没问题(例如,它通常与 struct sockaddr 类型一起使用来实现多态性),但类型双关 T*T** 是很奇怪。

事实上,除非 Tchar,否则 TT* 作为其第一个成员,并且没有填充,这也是一种代码味道(据我所知,UB)。

避免。

关于c++ - 它有什么作用*((T**)m_ptr)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973045/

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