当我尝试创建数组时:
EVENTLOGRECORD logs[] = new EVENTLOGRECORD[dwEventLogRecords];
它给出错误“转换”:无法从“类型1”转换为“类型2”,我不知道该如何解决,请帮忙。
#include <Windows.h>
void main() {
DWORD dwEventLogRecords;
HANDLE hEventLog = OpenEventLogA(0,"System");
GetNumberOfEventLogRecords(hEventLog, &dwEventLogRecords);
int numberOfBytes = sizeof(EVENTLOGRECORD)*dwEventLogRecords;
EVENTLOGRECORD logs[] = new EVENTLOGRECORD[dwEventLogRecords];
ReadEventLog(hEventLog, EVENTLOG_SEEK_READ | EVENTLOG_FORWARDS_READ,0,logs, numberOfBytes, 0, 0);
}
答案 0 :(得分:0)
在C ++中,没有从指针到数组类型的隐式转换。它们相似但不相同。数组可以衰减到指针,但是由于信息丢失,它无法正常工作-指针仅代表内存地址,而数组代表连续区域的地址,通常具有特定大小。 / p>
我建议阅读c-faq的第6节。
此外,
type *a and type b[]
a
是一个变量,需要分配用于存储的内存空间,而b
是程序中的一个标签,该标签在不保存的情况下向编译器提供地址信息。因此,您可以在程序中更改a
,但不能更改不可修改的b
。