2016-07-28 11 views
0

Ich debugge ein Problem, das nur angezeigt wird, wenn Code mit -O3 aber nicht -O1 Optimierungsebene mit g ++ kompiliert wird. Die Clientseite des Codes gehört meinem Team, aber die Funktion, die wir aufrufen, gehört einem anderen Team und wird in einer gemeinsam genutzten Bibliothek bereitgestellt. Wenn unser Code mit -O1 kompiliert wird und die Funktion aufruft, funktioniert es. Aber wenn unser Code mit O3 kompiliert und ruft die Funktion, gibt die Funktion Fehler über die Gültigkeit einer Struktur, die wir als Argument übergeben.Können Sie Objektdateien verknüpfen, die mit verschiedenen Optimierungsebenen kompiliert wurden?

Ich frage mich, ob es möglich ist, dass die Probleme aus verschiedenen Optimierungsstufen verwendet werden kommen, wenn die gemeinsam genutzte Bibliothek vs unserem Client-Seite Code zu kompilieren.

Antwort

3

Verschiedene Optimierungsstufen sind völlig legitim. Der wahrscheinlichste Grund ist, dass Sie ein Speicherleck haben und das Verhalten des Codes bei verschiedenen Optimierungen unterschiedlich ist.