为什么这没有任何错误?
int array[2];
array[5] = 21;
cout << array[5];
Run Code Online (Sandbox Code Playgroud)
打印出21就好了.但看看这个!我改变了5到46,它仍然有效.但是当我放47时,它没有打印任何东西.在任何地方都没有显示任 那是怎么回事!?!?
因为它只是未定义的行为(在C++中没有检查数组的边界).任何事情都可能发生.
简单地array[5]等同于*(&array[0] + 5),你试图write/read记忆,你没有分配.
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |