1
23
你很幸运。从函数返回不会立即擦除刚退出的堆栈帧。
顺便问一句,你是如何确认你得到了6分?表达式
|
2
3
一定是编译器正在做的事情。 http://www.learncpp.com/cpp-tutorial/74a-returning-values-by-value-reference-and-address/ 确认示例将从堆栈内存中删除引用。 |
3
3
返回对局部变量的引用或指针是未定义的行为。未定义的行为意味着,标准将决定权留给编译器。这意味着,未定义的行为有时会很好地工作,并且 sometimes it doesn't . |
4
2
地址
要知道有多幸运,请尝试在调用后运行使用堆栈的代码。
当我用
…但当我取消对呼叫的评论时
|
5
1
当您的函数通过引用返回一个整数时,它会立即分配给main()中的局部变量“i”。这意味着为foo()分配的堆栈内存必须保持足够长的时间才能进行返回分配。虽然这是不好的形式,但通常是有效的。如果你想保留一份推荐信
它更有可能失败。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |