2017-08-15 1 views
-3

J'ai simplifié les fonctions suivantes, lorsque j'essaie de supprimer le tableau après l'avoir utilisé, je reçois un segfault.Erreur de segmentation lors de la suppression d'un tableau

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

Félicitations, vous avez supprimé la partie du code avec le bogue en elle. – melpomene

+0

désolé j'ai (simplifié) ajouté la ligne qui causait l'erreur ... mais en quelque sorte le segfault se produit sur supprimer, pas lors de la configuration de la var – wutzebaer

+1

comportement non défini est indéfini. – melpomene

Répondre

1

Votre tableau est trop petit. float* target = new float[1]; alloue un seul élément mais vous en attribuez deux. target[1] = 1; corrompt votre tête.

donc vous devez faire:

float* target = new float[2];