我是一名学生,本学期在C++上学习数据结构课程,今晚我发现了一些我不太了解的内容.假设我要创建一个指向堆上数组的指针:
int* arrayPtr = new int [4];
Run Code Online (Sandbox Code Playgroud)
我可以使用指针语法访问此数组
int value = *(arrayPtr + index);
Run Code Online (Sandbox Code Playgroud)
但是,如果我在为数组分配的空间结束后立即向内存位置添加另一个值,那么我就可以访问它了
*(arrayPtr + 4) = 0;
int nextPos = *(arrayPtr + 4);
//the value of nextPos will be 0, or whatever value I previously filled that space with
Run Code Online (Sandbox Code Playgroud)
内存中*(arrayPtr + 4)的位置超过了为数组分配的空间的末尾.但据我了解,上述情况仍然不会造成任何问题.因此,除了它是C++的要求之外,为什么在声明它们时甚至给数组赋予特定的大小?