我正在尝试从 VisualWorks中调用EnumServicesStatus 。对于第一次调用,我将参数设置为所需的值,以了解返回的信息需要多少字节(pcbBytesNeeded)。
现在我需要使用 malloc: 为 lpServices 缓冲区分配内存,它需要实例数作为参数。我怎样才能轻松计算出这个?只需将 pcbBytesNeeded 除以 LPENUM_SERVICE_STATUS 结构的大小,我的代码在释放内存时就会崩溃。
/编辑
我在释放内存时解决了崩溃。(我不小心操纵了持有指针的变量)。但是,我在对 Karsten 的评论中提出的问题仍然有效。为什么 ENUM_SERVICE_STATUS 的大小不分 pcbBytesNeeded?这是因为 LPTSTR lpServiceName 和 LPTSTR lpDisplayName 成员吗?