C/C++ 製造 crash 的方法

本篇 ShengYu 介紹 C/C++ 製造 crash 的方法,平常我們寫程式是極力避免 crash,沒想到還有需要故意要讓程式 crash 的情況,真是跌破眼鏡啊!那我們就開始來寫一個會讓程式 crash 的程式吧!

存取 NULL pointer

最簡單讓程式 crash 的方法就是讓一個 pointer 指標指向 NULL,然後去存取這個 pointer 指標,例如使用 printf 印出 pointer 指向的值,

cpp-crash.cpp
1
2
3
4
5
6
7
8
9
10
11
12
// g++ cpp-crash.cpp -o a.out
#include <stdio.h>

void myprint(int* ptr) {
printf("%d\n", *ptr);
}

int main() {
int *ptr = NULL;
myprint(ptr);
return 0;
}

有時不一定會掛的話可以改成 -1 試試,

cpp-crash2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
// g++ cpp-crash2.cpp -o a.out
#include <stdio.h>

void myprint(int* ptr) {
printf("%d\n", *ptr);
}

int main() {
int *ptr = (int*) -1;
myprint(ptr);
return 0;
}

其它相關文章推薦
C/C++ 新手入門教學懶人包
C/C++ 字串轉數字的4種方法
C++ virtual 的兩種用法
C/C++ 字串反轉 reverse
C/C++ call by value傳值, call by pointer傳址, call by reference傳參考 的差別
C++ 類別樣板 class template
std::sort 用法與範例
std::find 用法與範例
std::queue 用法與範例
std::map 用法與範例
std::deque 用法與範例
std::vector 用法與範例