将此C ++代码转换为c。 [英] Convert this C++ code to c.
本文介绍了将此C ++代码转换为c。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
将此c ++代码转换为c。
Convert this c++ code to c.
bool inline DataCompare(const BYTE* pbData, const BYTE* pbMask, const char* pszMask)
{
for (; *pszMask; ++pszMask, ++pbData, ++pbMask)
{
if (*pszMask == 'c' && *pbData != *pbMask)
{
return false;
}
}
return (*pszMask == NULL);
}
DWORD inline FindPattern(DWORD dwStart, DWORD dwSize, const BYTE* szSig, const char* szMask)
{
PBYTE data = new BYTE[dwSize];
unsigned long bytesRead;
if (!ReadProcessMemory(process, (LPVOID)dwStart, data, dwSize, &bytesRead))
{
delete[] data;
data = nullptr;
return NULL;
}
for (DWORD i = 0; i < dwSize; i++)
{
if (DataCompare((const BYTE*)(data + i), szSig, szMask))
{
delete[] data;
data = nullptr;
return dwStart + i;
}
}
delete[] data;
data = nullptr;
return NULL;
}
如果你能提供帮助我会很感激。
我尝试过:
尝试过的代码出现了一些错误。链接 [ ^ ]
推荐答案
所以你有错误 - 在网上查找,你会去......
1 .new / delete是C ++的新东西,你必须使用malloc / free而不是min C
2. null中的nullptr关键字也不存在,但你可以创建一个定义用于解决该问题的名称...
So you have errors - look them up on the web, and you will go...
1. new/delete are new things to C++ and you have to use malloc/free instead of the min C
2. the nullptr keyword also does not exist in C, but you can create a define by that name to solve that problem...
按照 Peter 的建议,将new
替换为malloc
和删除
,免费
,此外,使用NULL
而不是nullptr
。
As suggested by Peter, replacenew
withmalloc
anddelete
withfree
, moreover, useNULL
instead ofnullptr
.
引用:
PBYTE数据=新BYTE [dwSize];
PBYTE data = new BYTE[dwSize];
变为
becomes
PBYTE data = (PBYTE) malloc(dwSize);
序列
while the sequence
Quote:
删除[]数据;
data = nullptr;
delete[] data;
data = nullptr;
变为
becomes
free(data);
data = NULL;
这篇关于将此C ++代码转换为c。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文