【发布时间】:2013-10-16 14:46:04
【问题描述】:
我觉得我错过了一些明显的东西,我无法弄清楚。 基本上,信息似乎正确地存储在第一个 for 循环中。但是,当我在第二个 for 循环中将其打印出来时,它只有垃圾值。我错过了什么?我对此比较陌生
bignum::bignum(const string &digits)
{
int length = digits.length();
ndigits = 0;
for (int i = 0; i < length; i++)
{
if(isdigit(digits[i]))
{
ndigits++;
digit = new int[ndigits];
int tmpInt = digits[i] - '0';
digit[i] = tmpInt;
}
if(isalpha(digits[i]))
{
break;
}
cout <<"step "<< i << " " << digit[i] << endl;
}
for (int i = 0; i < ndigits; i++)
{
cout << digit[i] << " ";
}
cout << endl;
cout << "digits" << ndigits << endl;
cout << endl;
}
【问题讨论】:
-
你正在疯狂地泄漏内存。
-
@chris 我有一个数字数组的析构函数
-
没关系,您在循环内根据条件调用
new。我看不出你如何为每个new []打电话给delete[]。 -
现在我明白我在做什么了.. 谢谢!
标签: c++ memory dynamic integer allocation