我正在尝试取消引用BYTE*
中unsigned char*
结构的tlhelp32.h
if
又名nullptr
)成员。但是当我尝试取消引用它时,我的程序崩溃了。我做了一个#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
using namespace std;
int main()
{
DWORD pid = 0xFFFFFFFF;
MODULEENTRY32 mod_entry;
mod_entry.dwSize = sizeof(MODULEENTRY32);
HANDLE procH;
cout << "PID: " << flush;
cin >> pid;
procH = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE|TH32CS_SNAPMODULE32, pid);
if(procH == INVALID_HANDLE_VALUE)
{
cout << "Failed to retrieve process handle" << endl;
CloseHandle(procH);
return 1;
}
if(!(Module32First(procH, &mod_entry))){cout << "Mod32 1st failed\n";CloseHandle(procH);return 1;}
if(mod_entry.modBaseAddr == nullptr){cout << "modBaseAddr is empty\n";CloseHandle(procH);return 1;}
BYTE mod_baseaddr = *mod_entry.modBaseAddr; //<-------------------Causes program to crash.
return 0;
}
声明,以确保它不是import operator
col_zero = operator.itemgetter(0)
err = operator.itemgetter(3)
。它不是,但我的程序仍然崩溃。这是我的代码:
pvst = set(['p','v','s','T'])
err_p = []
err_v = []
err_s = []
err_T = []
array_map = {'p':err_p, 'v':err_v, 's':err_s, 'T':err_T}
with open('file.txt') as f:
# iterate
for line in f:
line = line.strip().split()
# test
if col_zero(line) in pvst:
# store
array_map[col_zero(line)].append(err(line))