2017-08-15 10 views
-3

以下の機能を単純化しました。使用後にアレイを削除しようとすると、segfaultが発生します。アレイを削除する際のセグメンテーションエラー

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; 
} 
+5

おめでとう、あなたはそれのバグでコードの一部を削除しました。 – melpomene

+0

私は(簡略化)申し訳ありませんが、エラーを引き起こしていた行を追加...しかし、何らかの理由でセグメンテーションは、削除時に発生し、varを設定するときではありません – wutzebaer

+1

未定義の動作は未定義です。 – melpomene

答えて

1

あなたの配列は小さすぎます。 float* target = new float[1];は1つの要素しか割り当てませんが、2つを割り当てます。 target[1] = 1;はあなたの頭を傷つける。

だから、あなたがする必要があります。

float* target = new float[2];