gpt4 book ai didi

c++ - 分配动态数组 C++ 期间的段错误

转载 作者:行者123 更新时间:2023-11-30 05:49:15 25 4
gpt4 key购买 nike

不知道我哪里搞砸了。今天刚刚学习了如何动态分配数组,现在我正在尝试让用户分配一些整数并让程序找到输入数字的平均值。但是就在用户要读入新分配的数组中的数字时,我遇到了段错误。我越界了??或者我只是不恰本地对待指针?回答时尽可能严厉或诚实,我真的只是想了解我做错了什么。

这么多循环的原因是因为不仅我必须在循环中为 0 打断,而且每当从函数返回 NULL 或输入负数时我还需要重复迭代。

非常感谢您!!

#include <iostream>
using namespace std;

int* allocateArray(int);

int main()
{
int size;
int *ptr = NULL;
double sum = 0;


cout << "Enter Number of Integers. (Enter 0 to Exit)\n";
cin >> size;
while (size != 0)
{
do
{
do
{
while (size < 0)
{
cout << "Enter Number of Integers. (Enter 0 to Exit) \n";
cin >> size;
}
ptr = allocateArray(size);

}
while (ptr = NULL);

for (int i = 0; i < size; i++)
{
cout << "Enter Number for Integer " << i + 1 << endl;
cin >> ptr[i];
//THIS is where it stops. I get a segmentation fault no matter what number
//Or how many numbers I enter.
sum += *(ptr + i);
}
cout << "The Average is " << (sum/size) << endl;
delete [] ptr;
ptr = NULL;
sum = 0;


}
while (size != 0);
}


return 0;
}


//Function meant to practice allocating a dynamic array
int* allocateArray(int size)
{
int* tmp = NULL;

if (size < 1)
return NULL;
try
{
tmp = new int[size];
} catch(bad_alloc)
{
tmp = NULL;
}
if (tmp == NULL)
{
cout << "Failed to allocate the array!\n";
}
return tmp;
}

最佳答案

while (ptr = NULL); 替换为

while (ptr == NULL);

混淆比较运算符和赋值运算符是初学者的常见错误。如果您启用所有警告,您可能应该收到一个警告。

这会将 NULL 分配给 ptr 并将评估为 false 并中断。

关于c++ - 分配动态数组 C++ 期间的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com