Yvo*_*nne 0 c++ arrays heap pointers
我对指针有疑问.这是我的问题:
编写一个函数
int* read_data(int& size),cin通过输入Q 来读取数据,直到用户终止输入.该函数应将size参数设置为数字输入的数量.返回指向堆上数组的指针.该数组应具有完全大小的元素.当然,您不会在一开始就知道用户将输入多少元素.从10个元素的数组开始,每当数组填满时,大小加倍.最后,分配一个正确大小的数组并将所有输入复制到其中.一定要删除任何中间数组.
这是我的代码:
int* read_data(int& size);
int main()
{
int size ;
int* account_pointer = read_data(size);
int* account_array = new int[size];
int* bigger_array = new int[2 * size];
for (int i = 0; i < size; i++)
{
bigger_array[i] = account_array[i];
}
delete[] account_array;
account_array = bigger_array;
size = 2 * size;
system("PAUSE");
return 0;
}
int* read_data(int& size)
{
int input;
cout << "Enter integer, Q to quit : " ;
while(cin >> input)
{
size++;
}
return &size;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我插入非数字时,我收到一条错误消息.错误消息是Debug Error! Invalid allocation size : 4294967295 bytes.我是否错误地在main方法中声明了size变量?或者我的整个代码都被错误编码了?