gpt4 book ai didi

c++ - 程序不断出现段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:42 24 4
gpt4 key购买 nike

在 CodeBlocks 中对此进行编码,该程序不断出现段错误。谁能帮忙?

#include <string>
#include <iostream>
#include <sstream>
#include "include/hugeint.h"

using namespace std;

int main(int argc, char *argv[])
{
HugeInt h("123");

return 0;
}

我的 HugeInt 类(相关的),将非常大的整数存储为整数数组

class HugeInt
{
public:
HugeInt(string);
private:
DynArray dyn;
//HugeInt& reverse();
int size;
};

HugeInt::HugeInt(string input)
{
string digits = input;

for(unsigned int i = 0; i < digits.length(); i++){
dyn.add(digits.at(i) - 48);
}
size = dyn.size();
}

我的整数动态数组类

class DynArray
{
public:
DynArray();
~DynArray();
private:
int length;
int *arr; //points to this array
int nextIndex;
};

DynArray::DynArray() {
arr = new int[10];
for (int i = 0; i < 10; i++)
arr[i] = 0;
length = 10;
nextIndex = 0; }

DynArray::~DynArray()
{
delete [] arr;
}

int DynArray::size(){
return nextIndex;
}

void DynArray::add(int val) {
int *newArr;
if (nextIndex == length) {
length = length + 10;
newArr = new int[length];
for (int i = 0; i < nextIndex; i++)
newArr[i] = arr[i];
for (int j = nextIndex; j < length; j++)
newArr[j] = 0;
delete [] arr;
arr = newArr;
}
arr[nextIndex++] = val;
}

编辑:我评论删除 [] arr;出来,它仍然会出现故障:/

Edit2:好的,如果 main 如下,则代码有效。谁能解释一下为什么?

#include <string>
#include <iostream>
#include <sstream>
#include "include/hugeint.h"

using namespace std;

int main(int argc, char *argv[])
{
string in = "1234";
HugeInt h(in);

return 0;
}

最佳答案

在开始使用 DynArray add() 方法之前,您可能需要在 HugeInt 构造函数中初始化 DynArray。您没有在代码中包含 add 方法,但如果它按照我的想象执行,则您可能在使用它之前没有构造 DynArray 对象,因此出现段错误。

关于c++ - 程序不断出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737461/

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