在函数外存取局部变量的一个比喻
这篇讲的是C/C++中一个经典又容易踩坑的问题:为什么函数返回的局部变量地址会失效? 作者从StackOverflow上一段试图在函数外通过指针访问局部变量的代码出发,指出这种操作实际上触发了“未定义行为”。有趣的是,他没有直接罗列内存栈帧、作用域规则这些概念,而是用了一个巧妙的比喻:把函数的栈帧想象成一个“临时便签纸”。函数运行时,就在纸上写下局部变量的值;函数返回后,这张“纸”就被系统收回了,但指针p还傻傻地指着那张已经被擦除或准备覆盖的旧便签。所以通过p去读写,结果完全不可预测。 这种比喻把抽象的内存管理机制,变成了直观的生活经验。文章最终揭示的核心是:在栈上分配的生命周期,严格受限于函数的执行过程。理解这一点,就能自然避免那些“看起来对,实则危险”的编码习惯。