【发布时间】:2021-12-13 03:03:01
【问题描述】:
我正在为我的 c++ 课程研究动态数组,但我对动态数组的行为感到困惑。例如,如果我运行这段代码:
int* myDynamicArr = new int[3];
for (int i = 0; i < 10; i++)
{
myDynamicArr[i] = i + 1;
cout << myDynamicArr[i] << endl;
}
我希望它不起作用,因为我只将它声明为大小 3。但是当我运行它时,它会打印出 0-9。如果我这样做也是一样:
char* myCharArr = new char[2];
strcpy(myCharArr, "ThisIsALongString");
cout << myCharArr;
即使看起来应该失败,它也会打印完整的字符串。谁能解释我在这里做错了什么?谢谢!
【问题讨论】:
标签: c++ pointers dynamic-memory-allocation dynamic-arrays