![]() |
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()分配的堆栈内存必须保持足够长的时间才能进行返回分配。虽然这是不好的形式,但通常是有效的。如果你想保留一份推荐信
它更有可能失败。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |