我是一名学生,本学期正在学习 C++ 数据结构类(class),我遇到了一些我今晚不太理解的东西。假设我要在堆上创建一个指向数组的指针:
int* arrayPtr = new int [4];
我可以使用指针语法访问这个数组
int value = *(arrayPtr + index);
但是如果我在为数组分配的空间结束后立即向内存位置添加另一个值,我将能够访问它
*(arrayPtr + 4) = 0;
int nextPos = *(arrayPtr + 4);
//the value of nextPos will be 0, or whatever value I previously filled that space with
*(arrayPtr + 4) 在内存中的位置超过了为数组分配的空间的末尾。但据我了解,以上仍然不会造成任何问题。因此,除了它是 C++ 的要求之外,为什么还要在声明数组时为它们指定特定大小?
最佳答案
当您越过已分配内存的末尾时,您实际上是在访问其他某个对象的内存(或现在可用的内存,但稍后可能会更改)。因此,它会给您带来麻烦。尤其是当您尝试向其中写入内容时。
关于c++ - 在 C++ 中为数组分配特定数量的内存的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879198/