1

ファイルが .c の場合、MSVC がコンパイルされます。

.cpp の場合"cannot convert from 'void *' to 'unsigned char *'"

私は を使用しMEMORY_BASIC_INFORMATION::BaseAddresswindows.hいますがvoid*、それを に割り当ててchar*、実際のアドレスを確認できますか?

それを char* にキャストし、後でvoid*(Windows 関数で使用するために) キャストすると、バグが発生し、データまたは何かが失われます。

何をすべきか?

4

1 に答える 1

10

C++ では、明示的なキャストを使用して aを別のvoid*ものに変換する必要があります。

void *vp;
unsigned char *cp = static_cast<unsigned char *>(vp);

void*これは、aを他の任意のポインター型に暗黙的に変換できるC の状況とはまったく異なります。逆の状況は、C の場合と同じです。

void *vp = cp;  // no need for a static_cast

ただし、 onおよびwith でそのまま印刷できるためchar*、「実際のアドレスを表示する」必要がある理由がわかりません。void*operator<<std::ostreamstd::printf%p

于 2012-04-17T23:00:57.730 に答える