现在,我有一个简单的类,该类将XML文件解析为对我有用的整数。看起来像这样:
int* DataParser::getInts(){
*objectNumbers = new int[getSize()];
for (int i=0;i<getSize();i++){
objectNumbers[i]=activeNode->GetNextChild()->GetContent();
}
return objectNumbers;
}
在程序的主要部分中,我这样做是:
int* numbers= data->getInts();
///Do things to numbers[]
delete numbers;
一切正常,直到执行delete命令,这使所有内容崩溃。正确的做法是什么?
最佳答案
问题的一部分是您没有将new []与delete []配对。这可能不是您的错误根源,但是您应该习惯这样做。
该错误几乎可以肯定与您注释掉的代码有关。您可以在此处添加更多上下文,以便我们看到您在使用数字值做什么吗?
总的来说,我发现使用vector来解决这类问题要容易得多。它消除了内存管理的麻烦,并具有通过动态内存存储大小的附加好处。
void DataParser::getInts(std::vector<int>& objectNumbers){
for (int i=0;i<getSize();i++){
objectNumbers.push_back(activeNode->GetNextChild()->GetContent());
}
}
...
std::vector<int> numbers;
data.getInts(numbers);
关于c++ - 如何处理C++中类之间传递运行时大小的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/835233/