一个简单的问题,当我使用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/

10-09 05:58