动态数组仅分配一个元素

Dynamic array only allocating one element

本文关键字:一个 元素 数组 分配 动态      更新时间:2023-10-16

我已经搜索了整个搜索,在此上没有找到任何东西。

我有以下简单代码:

#include<iostream>
using namespace std;
int main() {
int *newArray;
int size;
cout << "enter size: ";
cin >> size;
newArray = new int[size];
cin.get();
return 0;

由于某种原因,无论输入的数字如何,动态数组总是只有一个分配的元素。我没有遇到任何编译器错误或运行时间错误(除了数组问题)。我也尝试了

int *newArray;
newArray = new int[100];

const int SIZE = 100;
int *newArray;
newArray = new int[SIZE];

我得到相同的结果。如果有所作为,我正在使用Visual Studio Community 2015进行IDE。如果有人有任何指针(没有双关语),请告诉我。谢谢。

newArray不是数组,它只是通往内存中某个位置的指针。它不包含许多元素,它只是内存中的一个地址。当您进行newArray = new int[n]时,分配了内存的sizeof(int)*n字节,并且该分配空间的地址保存在newArray中。

Visual Studio仅知道newArray是指向INT的指针。因此,它只是显示了该地址的一个数字。它不知道那里分配了多少内存。

如果您想看到的比第一个int更多,请打开内存视图,键入newArray作为地址,请设置它以显示int s。您会看到简单的内存解释为整数,因此您会从数组中看到数字。但是这些int S不会结束。您的数字后,将有垃圾。

尝试的另一个选项(我不确定它是否有效)是将(int[100])newArray添加到手表窗口。

因此,内存是分配的,可以随意写和阅读,不要忘记delete[]