2017-08-15 69 views
-3

在使用它時嘗試刪除陣列時,我簡化了以下功能,出現段錯誤。刪除陣列時出現分段錯誤

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

恭喜你,你已刪除在它的bug代碼的一部分。 – melpomene

+0

對不起,我(簡化)添加了導致錯誤的行......但不知何故segfault發生在刪除,而不是設置var時 – wutzebaer

+1

未定義的行爲是未定義的。 – melpomene

回答

1

您的數組太小。 float* target = new float[1];只分配一個元素,但分配兩個元素。 target[1] = 1;腐敗你的頭。

所以你需要做的:

float* target = new float[2];