在CI中,可以将void*分配给char*,但不能分配给C++

use*_*943 1 c c++ windows char void-pointers

如果文件是.c MSVC将编译.

如果它是.cpp它 "cannot convert from 'void *' to 'unsigned char *'"

我使用MEMORY_BASIC_INFORMATION::BaseAddresswindows.hvoid*,将其分配给一个char*让我看见你知道实际的地址?

当我把它转换为char*,然后回到void*(在windows函数中使用它)时,它就像错误并丢失数据或其他东西

该怎么办?

Fre*_*Foo 9

在C++中,您必须使用显式强制转换将其转换void*为其他内容:

void *vp;
unsigned char *cp = static_cast<unsigned char *>(vp);
Run Code Online (Sandbox Code Playgroud)

这确实不同于C中的情况,其中a void*可以隐式转换为任何其他指针类型.相反的情况仍然如C:

void *vp = cp;  // no need for a static_cast
Run Code Online (Sandbox Code Playgroud)

不过,我不明白你为什么会需要一个char*能够"看到实际的地址"为void*可打印为-是operator<<std::ostreamstd::printf%p.