【问题标题】:What is the easiest way to make a C++ program crash?使 C++ 程序崩溃的最简单方法是什么?
【发布时间】:2012-01-18 21:18:21
【问题描述】:

我正在尝试制作一个 Python 程序来与不同的崩溃进程交互(这不在我的掌控之中)。不幸的是,我正在与之交互的程序甚至不会可靠地崩溃!所以我想制作一个故意崩溃的快速 C++ 程序,但我实际上并不知道最好和最短的方法,有谁知道在我的中间放什么:

int main() {
    crashyCodeGoesHere();
}

让我的 C++ 程序可靠地崩溃

【问题讨论】:

  • 您可以使用内联汇编来尝试执行特权指令:asm { cli; };
  • @aitchnyu 我认为每个问题的答案的可用性有所不同。 (仅供参考:这两个问题我都没有投票)
  • 任何关于在已经传播时抛出异常的评论?请在anc评论下方查看我的答案
  • Redis 使用以下*((char*)-1) = 'x'; 代码来引发崩溃,以便调试阅读我的answer here 中的更多内容
  • 我在搜索崩溃报告系统的测试用例时发现了这个问题。我需要在正常运行时强制崩溃以调用崩溃报告器和堆栈转储发送。谢谢!

标签: c++ crash


【解决方案1】:
char*freeThis;
free(freeThis);

释放未初始化的指针是未定义的行为。在许多平台/编译器上,freeThis 将有一个随机值(无论之前那个内存位置是什么)。释放它会要求系统释放该地址处的内存,这通常会导致分段错误并导致程序崩溃。

【讨论】:

  • 这应该总是在所有系统上崩溃。 int *p = (int *)-1; *p = 1;。这是因为内存地址 2^64 - 1 在任何系统上都不存在,至少现在不存在(假设指针长度为 8 个字节)。
猜你喜欢
  • 1970-01-01
  • 2013-08-06
  • 2011-11-20
  • 2013-02-04
  • 2010-12-03
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多