【发布时间】:2021-11-02 07:53:54
【问题描述】:
我不明白这里的一些东西。我正在尝试使用GetDiskFreeSpaceExA 函数来获取驱动器的驱动器空间。当我运行以下代码时:
// Setup the DWORD variables.
PULARGE_INTEGER lpFreeBytesAvailableToCaller{},
lpTotalNumberOfBytes{},
lpTotalNumberOfFreeBytes{};
// Lets construct the drive letter based on what the user passed.
/*std::string letter;
letter += driveLetter;
letter += ":\\";
letter += "\0";*/
if (GetDiskFreeSpaceExA(NULL, lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes)) {
std::cout << lpTotalNumberOfBytes << "\n";
}
我得到的只是“0000000000000000”。我知道我缺少一些东西,有人可以解释一下吗?
【问题讨论】:
-
lpTotalNumberOfBytes是一个空指针,您正在打印它的地址(这并不奇怪)。一般来说,你调用函数的方式是错误的,你没有任何内存可以写入结果 -
看来你不明白将变量传递给函数by value、by pointer和by reference之间的区别。