现在我有一个简单的类来处理将XML文件解析为对我有用的int.看起来像这样:
int* DataParser::getInts(){
*objectNumbers = new int[getSize()];
for (int i=0;i<getSize();i++){
objectNumbers[i]=activeNode->GetNextChild()->GetContent();
}
return objectNumbers;
}
Run Code Online (Sandbox Code Playgroud)
在该计划的主要部分,我通过以下方式收到:
int* numbers= data->getInts();
///Do things to numbers[]
delete numbers;
Run Code Online (Sandbox Code Playgroud)
一切正常,直到删除命令,崩溃一切.这样做的正确方法是什么?
部分问题在于您没有将new []与delete []配对.这可能不是你的错误的根源,但你应该进入这样做的习惯.
该错误几乎肯定与您留下注释掉的代码有关.你能在那里添加一些更多的上下文,这样我们就可以看到你在使用数字值做什么了吗?
一般来说,我发现使用向量来解决这类问题要容易得多.它将内存管理排除在外,并具有使用动态内存存储大小的额外好处.
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);
Run Code Online (Sandbox Code Playgroud)