问题描述
- 为什么new没有申请到那个位置的内存还可以访问那个位置的值
-
#include
using namespace std;int main(void)
{
float *x = new float[10];
for(int i=0;i!=10;++i)
x[i] = i;
cout << "the 1st element is " << x[0] << endl;
cout << "the 12st element is " << x[12] << endl;
double a;
a = x[0] + x[12];
cout << a << endl;return 0;
}
解决方案
x[12],依然会按起始地址加12偏移,只要那个位置有内容就会读出来,不出错也是你赶巧了
解决方案二:
只能说好危险啊 。你让指针移动起来,可以访问任何一个地方(堆)的内容的。切记不要更改指针上的内容。
时间: 2024-09-20 16:55:16