“一个有趣的C语言代码”
#include <stdio.h>
int print() {
printf("hello world!\n");
return 0;
}
int main(void) {
long base[0];
long* result = base+3;
*(result+1) = *result;
*result = (long)print;
return 0;
}
该代码运行在64位linux机器上。运行结果是打印了hello world 。但是代码里面没有主动调用print函数。
ChatGPT
该代码看似没有直接调用 print 函数,但实际上通过对指针的不当操作实现了间接调用。在代码中,发生了指针越界写入,这是一种未定义行为,其结果在不同的平台和编译器上可能不同,