我阅读了这两个“功能”所做的事情,看起来它们是一样的,尽管它们不是
的dwSize:
“结构的大小,以字节为单位。”
的sizeof:
“sizeof(x)返回变量或类型x占用的内存量(以字节为单位)”
我的减速:
PROCESSENTRY32 entry;
cout >> entry.dwSize >> endl;
cout >> sizeof(entry) >> endl;
为什么entry.dwSize和sizeof(条目)不一样? 根据定义,entry.dwSize应该以字节为单位给出条目的大小 和sizeof(entry)应该以字节为单位给出条目的大小(这是结构,所以基本相同)
答案 0 :(得分:0)
来自MSDN Documentation for PROCESSENTRY32:
的dwSize
结构的大小,以字节为单位。在调用Process32First函数之前,将此成员设置为sizeof(PROCESSENTRY32)。如果未初始化dwSize,则Process32First将失败。
所以dwSize
应该等于sizeof(PROCESSENTRY32)
,但是创建struct
不会初始化其成员,因此在设置它们之前,所有这些都会有垃圾。
答案 1 :(得分:0)
创建结构时,它可以使用0字节随机初始化。当您查看docs时,您会发现在使用之前必须自己填写dwSize。
答案 2 :(得分:0)
你混淆了两件完全无关的事情。 PROCESSENTRY32::dwSize
是您应该初始化为收件人PROCESSENTRY32
结构的大小的数据字段。您有责任将其设置为正确的值。它不会神奇地自我定位。
即。你应该做的
PROCESSENTRY32 entry;
entry.dwSize = sizeof entry;
...
在尝试将entry
传递给任何WinAPI函数之前。
当dwSize
是“结构的大小,以字节为单位”时,这就是doc的意思。