删除数组时出现分段错误

时间:2017-08-15 15:12:00

标签: c++ arrays segmentation-fault

我简化了以下功能,在使用它后尝试删除数组时,我得到了段错误。

float * MyService::innerFunction(MyClass& feature) {
    float* target = new float[1];
    target[0] = feature.getValue();
    target[1] = 1;
    return target;
}

float MyService::outerFunction(MyClass& feature){
    float* input = innerFunction(feature);
    ...
    delete[] input; <- seg fault
    return result;
}

1 个答案:

答案 0 :(得分:1)

你的阵列太小了。 float* target = new float[1];只分配一个元素,但您分配了两个元素。 target[1] = 1;会腐蚀你的头脑。

所以你需要这样做:

float* target = new float[2];