动态数组仅分配一个元素
Dynamic array only allocating one element
我已经搜索了整个搜索,在此上没有找到任何东西。
我有以下简单代码:
#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[]
。
相关文章:
- lower_bound()返回最后一个元素
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 仅显示链表的最后一个元素
- push_back通过自行创建的对象获取最后一个元素的向量
- 使用 map.end() 访问 map 的最后一个元素
- 如何知道地图中的最后一个元素是否被删除?
- 选择一个元素而不是一个对象的数组的原因
- std::矢量保存 只推送最后一个元素
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 反转后不返回最后一个元素
- 如何在新数组较小时创建新数组并将旧数组的最后一个元素复制到新数组中?
- 访问 for_each 函数中的前一个元素
- 在 QListView 中显示最后一个元素
- 从 std::vector 中选择一个元素,而不是给定元素
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 遍历列表包含排除最后一个元素的内容
- 如何从一个无序集合中获取一个元素