关于代码异常的一个问题
A question about the code exception
Env: VS 2008, c++
我的代码如下:
void HopeException(LPVOID nVerify)
{
char *p = NULL;
p = (char *)nVerify;
delete []p;
}
当我调用函数"HopeException"与参数非null,如:
HopeException(123);
那么我希望程序会抛出一个异常。
但是当我用Release模式在VS 2008上编译代码时,程序运行良好。
我不知道为什么。关于这个问题,有人能给我一个帮助吗?
或者你有什么好主意用另一种方法实现这个功能吗?
编辑:我很抱歉,我想我之前发错代码了。
实际上,我正在为我的软件做保护。我的软件将获取DLL文件的CRC值,然后我的软件将检查CRC值,如下所示:
unsigned int VerifyCRC = FF234322;
unsinged int CRC = getCRC("Fun.dll");
LPVOID lpResult = CRC & (~VerifyCRC);
HopeException(lpResult);
所以根据下面的代码,如果破解者破解了Fun.dll文件,执行程序将抛出异常。
Jell - c++给了你足够的绳子来吊死你自己(很可能是你的大多数朋友)。
但是为什么要这样做呢?(-假设这取决于你的朋友)
您将nVerify
视为地址并将其分配给指针p
,然后在该地址上调用delete[]
。如果nVerify的值不是一个有效的地址,你可能会得到未定义的行为,其中包括程序看起来"运行良好",主要是因为你没有在这个函数中做太多的事情。
你到底想干什么?
这些代码不应该在c++中编译;最接近编译正常的代码是:
void HopeException(int nVerify)
{
char *p = NULL;
p = (char *)nVerify;
delete []p;
}
这段代码会在VS 2010 Express上崩溃,所以我认为它也会在VS 2008上崩溃。如果您的目标是直接抛出一个调试器异常(在x86上),您可以使用
__asm int 3;
如果你的目标是进入调试器,你也可以使用
DebugBreak();
相关文章:
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- 我在使用 boost::serialization 时遇到了一个问题,我的代码在 Linux 中运行良好,但在 Wind
- 在C++,重复申报仍然是一个问题吗?
- "Memory Fragmentation"这仍然是一个问题?
- 缺少类型说明符和另一个问题
- 在浮点精度成为一个问题之前,可以将多少个浮点值加在一起
- 关于使用C++结构的一个问题
- 关于骰子概率计算的一个C++问题
- 我想知道我将如何实现 + 运算符重载.我已经从我上一个问题中计算出 += 运算符重载
- 组合理论的一个问题
- 我有一个问题,创建了C 中阻塞队列的向量
- CreateFileWindows XP和7中存在一个问题
- 我是编码新手,我面临一个问题
- 在添加新记录和访问记录时有一个问题
- 专用纯虚拟模板函数(未定义引用)的另一个问题
- 在C++中,这个Eigen::张量的声明是安全的,还是有缺陷的?我应该为它提交一个问题吗
- 我如何让我的部分代码循环并重复一个问题,直到答案是有效的输入C++
- 我的程序停止工作,因为检测到一个问题