栈空间会随着函数执行完而释放,空间里的值可能会被覆盖
#include <iostream>
void* Fun(int* a,int* b) {
int c = *a + *b;
return (void*) & c;
}
void overwriteStack() {
int dummy[100] = { 0 }; // 故意占用栈空间
}
int main() {
int* a;
int* b;
int aa = 2;
int bb =4;
a = &aa;
b = &bb;
int *c = (int*)Fun(a,b);
overwriteStack();
int cc = *c;//被覆盖了 0000
return NULL;
}
浙公网安备 33010602011771号