有没有一种聪明的方法能够强制运行时系统在函数返回时清除栈帧?我正在寻找一个编译器标志或某种有趣的黑客。
我们正在尝试创建一个“混沌构建”供学生使用,该构建具有不良行为并向学生暴露更多错误。我知道AddressSanitizer和valgrind可以检测到这些错误,但我真的想能够演示由此类错误代码引起的错误。例如:
int *foo() {
int a = 10;
return &a;
}
int bar() {
int * a = foo();
printf("%d\n", *a); // I would like to guarantee that this line doesn't print 10
}
a
,其值可能为123947120
。也许你的意思是printf("%d\n", *a); // A所存储的值
。 - abelenky