基于数组越界完成的栈溢出的Hello World

来源:

基于数组越界完成的栈溢出的Hello World

代码:

文字版:

#include <bits/stdc++.h>
using namespace std;

void HelloWorld(){
    printf("Hello World");
}

void f(){
    int arr[5] = {1, 2, 3, 4, 5};
    arr[6] = (int)HelloWorld;
}

int main() {
    
    f();
    
    return 0;
}

图片版:

基于数组越界完成的栈溢出的Hello World_代码图片

编译器提示:

基于数组越界完成的栈溢出的Hello World_编译器提示

运行结果:

基于数组越界完成的栈溢出的Hello World_运行结果

原理解释:

基于数组越界完成的栈溢出的Hello World_原理解释

(注意我删去了源程序的getchar()因为我的编译器程序运行完会自动暂停)