将此C ++代码转换为c。 [英] Convert this C++ code to c.

查看:74
本文介绍了将此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, replace new with malloc and delete with free, moreover, use NULL instead of nullptr.
引用:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆