Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引发未处理的异常:在简单c++;动态增加数组长度以存储数字的程序 我正在做一个C++赋值,允许用户逐个输入数字并存储在一个数组中,并动态地增加这个数组容量(乘以2)。基本上是使用一些基本代码来模拟“向量” #包括 使用名称空间std; 结构myArray{ 常量大小\u t初始大小=1; 常数大小增长系数=2; 尺寸长度=0; 尺寸容量=初始尺寸; int*v;//向量 }; int main(){ int x; myArray编号; while(true){ cout x; if(x_C++ - Fatal编程技术网

引发未处理的异常:在简单c++;动态增加数组长度以存储数字的程序 我正在做一个C++赋值,允许用户逐个输入数字并存储在一个数组中,并动态地增加这个数组容量(乘以2)。基本上是使用一些基本代码来模拟“向量” #包括 使用名称空间std; 结构myArray{ 常量大小\u t初始大小=1; 常数大小增长系数=2; 尺寸长度=0; 尺寸容量=初始尺寸; int*v;//向量 }; int main(){ int x; myArray编号; while(true){ cout x; if(x

引发未处理的异常:在简单c++;动态增加数组长度以存储数字的程序 我正在做一个C++赋值,允许用户逐个输入数字并存储在一个数组中,并动态地增加这个数组容量(乘以2)。基本上是使用一些基本代码来模拟“向量” #包括 使用名称空间std; 结构myArray{ 常量大小\u t初始大小=1; 常数大小增长系数=2; 尺寸长度=0; 尺寸容量=初始尺寸; int*v;//向量 }; int main(){ int x; myArray编号; while(true){ cout x; if(x,c++,C++,您正在创建一个指向int的指针,但现在它只指向未确定的内存是未定义的行为,可能引发读取访问冲突。initial\u size不正确。v在一开始就没有任何元素,因此v.length将在循环的第一次迭代中返回0,而if语句将计算为false。然后您将尝试访问 numbers.v[numbers.length++] = x; 这是未定义的行为 您应该以一个元素开始v,这样v的起始大小将是正确的: int* v = new int[1]; 也不要忘记在最后释放内存以避免内存泄漏。使用调试器一次运行

您正在创建一个指向int的指针,但现在它只指向未确定的内存是未定义的行为,可能引发读取访问冲突。
initial\u size
不正确。
v
在一开始就没有任何元素,因此
v.length
将在循环的第一次迭代中返回
0
,而
if
语句将计算为false。然后您将尝试访问

 numbers.v[numbers.length++] = x;
这是未定义的行为

您应该以一个元素开始
v
,这样
v
的起始大小将是正确的:

int* v = new int[1];

也不要忘记在最后释放内存以避免内存泄漏。

使用调试器一次运行程序一行,观察所有变量的值;然后bug会非常明显。这就是调试器所需要的。知道如何有效地使用调试器是每个C++开发者的必备技能。@ SamVarshavchik相信我,我确实做到了,不管是在第一个循环中,v显示的值是0x11101110111(?)我不知道它会发生什么。如果你能强烈地考虑将当前正在<代码>主代码< /代码>中的调整大小的逻辑构造成一个代码“MyReals”,它会被保护和重用。你告诉它去做,而不是你想让它做什么。你从来没有告诉过你的计算机为
v
创建一个新数组,在“第一个循环”上指向或初始化它,这就是为什么你的计算机从来没有这样做,
v
指向随机垃圾。你不清楚这其中的哪一部分?我绝对不能从initial_size=0开始,因为我不能通过乘以2来增加我的阵列容量:(0*2=0)。@1201程序我不太明白你的意思,我初始化了“myArray Number”,所以“number.v”应该初始化为int*类型,指向数组中第一个元素的内存地址,我是对的还是错的?
int* v = new int[1];