我读了这两个关于这些“函数”的解释,虽然它们看起来是一样的,但它们并不输出相同的值:
dwSize:
结构的大小(以字节为单位)。
尺寸:
“sizeof(x)返回变量或类型x占用的内存量(以字节为单位)”
我的代码:
PROCESSENTRY32 entry;
cout >> entry.dwSize >> endl;
cout >> sizeof(entry) >> endl;
字符串
为什么entry.dwSize
和sizeof(entry)
在打印时不产生相同的值?根据上面的描述,它们都应该给予我以字节为单位的条目大小。
3条答案
按热度按时间jmp7cifd1#
关于MSDN Documentation for PROCESSENTRY32:
dwSize
结构的大小,以字节为单位。在调用Process32First函数之前,请将此成员设置为sizeof(SENTRY32)。如果不初始化dwSize,Process32First将失败。
所以
dwSize
应该等于sizeof(PROCESSENTRY32)
,但是创建一个struct
并不会初始化它的成员,所以在你设置它们之前,所有的成员都会有垃圾。rryofs0p2#
当你创建一个结构体时,它要么是用0字节初始化,要么是随机初始化。当你查看docs时,你会发现在使用它之前你必须自己填充dwSize。
0yycz8jy3#
你混淆了两个完全无关的东西。
PROCESSENTRY32::dwSize
是一个数据字段,* 你 * 应该初始化为接收方PROCESSENTRY32
结构的大小。你有责任将它设置为正确的值。它不会神奇地自己设置。也就是说,你应该
字符串
在尝试将
entry
传递给任何WinAPI函数之前。这就是文档中
dwSize
是“结构的大小,以字节为单位”的意思。