Pointer überprüfen um segfault zu verhindern -geht das?



  • gibt es irgendeine Möglichkeit einen Pointer zu überprüfen ob der Zugriff auf ihn einen Segmentation fault auslösen würde?
    Also kann ich frage welche Speicherbereiche einer Applikation zugewiesen sind oder eben gesperrt sind?
    In Funktionen/Mezhoden welche Pointer als Parameter haben würde ich gerne Segfaults verhindern wollen, da diese Funktionen Teil einer API sind.

    Das nächste Problem wäre Unit Tests zu programmieren die nicht einfach irgendwo abrechen sondern sagen: "Dieser Testfall WÜRDE ein segfault auslösen"

    Falls sowas unmöglich ist führt das eigentlich unit-Tests bei C/C++ ad absurdum, oder?!



  • c++ kann das nicht. je nach compiler und betriebssystem gibts aber möglichkeiten. und entscheide dich, on du c oder c++ meinst.



  • vielen Dank für die schnelle Antwort

    in meinem speziellen Fall ist es ein Qt Projekt für das ich Unittests (QTestlib) entwickeln soll.
    Wenn ich das richtig verstanden hab gibt es für c/c++ keine Möglichkeit Software auf Segmentation faults zu testen bzw. sie zu verhindern (falls die API Funktionen anbietet die Pointer annehmen).

    Und es gibt auch keine Funktion des Betriebssystems einem Programm seinen Speicherbereich mitzuteilen oder die gesperrten Speicherbereiche?

    Mich würde auch interessieren wie mit diesem Problem praktisch umgegangen wird, also wie schreibt man Unittests an derem Ende man ungefähr weiß bei welchem Testfall es einen segfault gab - Luxus wäre natürlich die anderen Testfääle dann trotzdem noch auszuführen.



  • dermoritz schrieb:

    vielen Dank für die schnelle Antwort
    in meinem speziellen Fall ist es ein Qt Projekt für das ich Unittests (QTestlib) entwickeln soll.

    windows, linux oder beides?

    Wenn ich das richtig verstanden hab gibt es für c/c++ keine Möglichkeit Software auf Segmentation faults zu testen bzw. sie zu verhindern (falls die API Funktionen anbietet die Pointer annehmen).

    ich weigere mich, von c/c++ zu reden.

    Und es gibt auch keine Funktion des Betriebssystems einem Programm seinen Speicherbereich mitzuteilen oder die gesperrten Speicherbereiche?

    wozu, du kannst doch einfach testen.

    Mich würde auch interessieren wie mit diesem Problem praktisch umgegangen wird, also wie schreibt man Unittests an derem Ende man ungefähr weiß bei welchem Testfall es einen segfault gab - Luxus wäre natürlich die anderen Testfääle dann trotzdem noch auszuführen.

    null problemo. aber verrate uns, welches betriebssystem und welchen compiler du nehmen magst.
    und rede nicht von c/c++.

    ups, da ich das genau so schonmal gefordert hatte, schließe ich hiuermit den thread. such das geeignete unterforum und frag dort nochmal.
    und zum dritten mal: welchen bestriebssystem und welcher compiler? die antwort darauf kann dir helfen, das geeignete forum zu finden.



  • OS spezifische Möglichkeiten gibt es, aber da du weder OS noch Compiler oder sonst was nennst ist es recht schwierig dir zu helfen.


Anmelden zum Antworten