【发布时间】:2008-11-12 08:15:32
【问题描述】:
根据 MSDN
返回值指定结果 消息处理;这取决于 在发送的消息上。
我知道它被定义为
typedef LONG_PTR LRESULT;
意味着它在 64 位机器上是 8 个字节,但不是!
有谁知道假设只使用低 4 个字节并将其存储为INT(例如)是否安全。
【问题讨论】:
根据 MSDN
返回值指定结果 消息处理;这取决于 在发送的消息上。
我知道它被定义为
typedef LONG_PTR LRESULT;
意味着它在 64 位机器上是 8 个字节,但不是!
有谁知道假设只使用低 4 个字节并将其存储为INT(例如)是否安全。
【问题讨论】:
不,这不安全,因为返回值是由正在发送的消息和处理程序定义的。
如果您控制处理程序和消息,那么它是可能的,在一般情况下它是不安全的。
詹姆斯
【讨论】:
不,一般来说它是不安全的。不要假设沮丧。此外,使用 /RTCc 编译代码也很有用,可确保在运行时断言无意的强制转换。
【讨论】:
绝对不安全。如果消息返回确实是一个指针,那么指针很有可能设置它的第 33 位 - 尤其是在具有 >4GB 内存的机器上。
【讨论】: