一个简单的问题,当我使用memmove()和memcpy()时遇到问题。我真的不明白我的代码有什么问题。顺便说一句,我使用QT。
HANDLE hFile;
HANDLE hMapFile;
HANDLE hMapView;
hFile = CreateFileW((const wchar_t*) objPath.constData(), GENERIC_READ , 0, NULL, OPEN_EXISTING, 0, NULL);
if (hFile != INVALID_HANDLE_VALUE){
hMapFile = CreateFileMappingW(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
if (hMapFile != INVALID_HANDLE_VALUE){
hMapView = MapViewOfFile(hMapFile, GENERIC_READ, 0, 0,0);
if (hMapView != INVALID_HANDLE_VALUE){
uint DefineWord;
memmove((void *) &DefineWord, hMapView,2); // <- always error right here
qDebug()<<DefineWord;
}
}
}
最佳答案
hMapView
不是指针。 memmove
需要两个指针。通过正确声明hMapView来解决此问题。它应该是一个LPVOID
。
关于c++ - 问:QT(c++)上的memmove()和memcpy(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10148266/