现在,我有一个简单的类,该类将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/

10-11 22:27
查看更多