zr.*_*zr. 1 c++ deterministic undefined-behavior
对于相同的输入,满足以下条件的代码是否可以为每次运行生成不同的输出?
"未定义的行为"意味着任何事情都可能发生.这还包括在程序的每次运行中可能发生的不同事情.
例如,如果使用未初始化的内存,则可能与程序运行程序运行程序运行的内容完全不同.
一个简单的例子:
int main() {
char s[1024];
s[1023] = '\0';
std::cout << s << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这通常会在每次运行时打印不同的字符串.它不使用任何堆分配,我不认为它甚至是任何未定义的行为,所以可能它不是你的问题的预期解决方案.
另一个例子是new可以在每个程序运行时返回不同的地址(这里也没有UB):
int main(void) {
std::cout << new int << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
因此,即使没有未定义的行为,也存在"随机性"的来源,因此当然,对于未定义的行为,每个程序运行时都会发生不同的事情.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |