use*_*853 -1 c++ android-ndk c++11
当像这样的非void函数没有返回任何内容时,我崩溃了:
bool ClassA::foo() {
//---do something---
}
void ClassA::foo2() {
foo();
}
Run Code Online (Sandbox Code Playgroud)
请注意,未使用此函数的返回值。崩溃是100%可重现的。它每次都崩溃。理想情况下,它应该发出警告,并且如果我不使用返回值,则不应崩溃。
此C ++代码在Android NDK版本r19上编译。
同样的代码在NDK-r15c上也能正常工作。
有什么最新变化吗?
当像这样的非void函数没有返回任何内容时,我崩溃了:
因为这是未定义的行为。
C ++ 20标准草案的第8.6.3节:
从main以外的[non-void]函数的末尾流出会导致未定义的行为。
请注意,这与函数的实际调用方式无关。因此,即使返回值被忽略(例如在OP中),也是导致UB的“末尾流”。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |