C++ ReadFile缓冲区是否需要为空?

C++ ReadFile缓冲区是否需要为空?,c++,windows,C++,Windows,Windows ReadFile函数在这一点上还不清楚,但是缓冲区是否应该事先显式为空 DWORD dwLength = 255; char acBuffer[255]; memset(&acBuffer[0], '\0', 255); // Is this required? ReadFile(HANDLE, acBuffer, dwLength, &dwLength, OVERLAPPED); 无论我是否初始化缓冲区,它似乎都能可靠地工作 缓冲区是否应该事先显式为空

Windows ReadFile函数在这一点上还不清楚,但是缓冲区是否应该事先显式为空

DWORD dwLength = 255;
char acBuffer[255];
memset(&acBuffer[0], '\0', 255);    // Is this required?
ReadFile(HANDLE, acBuffer, dwLength, &dwLength, OVERLAPPED);
无论我是否初始化缓冲区,它似乎都能可靠地工作

缓冲区是否应该事先显式为空

DWORD dwLength = 255;
char acBuffer[255];
memset(&acBuffer[0], '\0', 255);    // Is this required?
ReadFile(HANDLE, acBuffer, dwLength, &dwLength, OVERLAPPED);
否。如果没有错误,它将填充数据,长度不超过dwLength给定的长度。只要检查错误并且不使用dwLength以外的缓冲区中的数据,就不可能有问题

或者我可以不用初始化就直接使用缓冲区吗


是。

您需要初始化输入参数,而不是输出参数。但是,您确实需要初始化指向输出参数的指针。也就是说,不能传递未初始化的指针而不是&dwLength。