Hängender Zeiger
Ein hängender Zeiger ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}) bezeichnet in der Informatik einen Zeiger, der einen ungültigen Wert enthält und dadurch auf einen nicht vorhandenen oder nicht dem Zeiger zugeordneten dynamischen Speicherbereich (auch Heap genannt) verweist.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20140826120809
| {{#ifeq: 20140826120809 | *
| {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20140826120809}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20140826120809}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }} ({{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free | {{#invoke:WLink|getEscapedTitle|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}} | {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}} }}
}}}}}}}}{{#if:2022-11-16 18:10:22 InternetArchiveBot
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20140826120809|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html}}
|| {{#if: || }}
}}{{#if: 12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free
| {{#if: {{#invoke:WLink|isBracketedLink|12. Dynamische Speicherverwaltung - 12.3. Hinweise für die Verwendung von malloc, calloc und free}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://public.beuth-hochschule.de/~kempfer/skript_c/Kap12.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Abgerufen am 22. August 2014.</ref>
Hintergrund
Hängende Zeiger kommen oft dadurch zustande, dass sie nicht initialisiert wurden (in dem Fall alternativ wilde Zeiger genannt) – aber auch dadurch, dass sie auf einen Speicherbereich verweisen, der bereits freigegeben wurde.<ref> <templatestyles src="Webarchiv/styles.css" />{{#if:20131122180027
| {{#ifeq: 20131122180027 | *
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20131122180027}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2018-04-15 13:40:54 InternetArchiveBot | 2018-04-15 13:40:54 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20131122180027}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2018-04-15 13:40:54 InternetArchiveBot | 2018-04-15 13:40:54 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2018-04-15 13:40:54 InternetArchiveBot | 2018-04-15 13:40:54 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} ({{#if: {{#if: 2018-04-15 13:40:54 InternetArchiveBot | 2018-04-15 13:40:54 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }}
}}}}}}}}{{#if:2018-04-15 13:40:54 InternetArchiveBot
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20131122180027|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.informit.de/books/c++21/data/kap08.htm}}
|| {{#if: || }}
}}{{#if: Zeiger.
| {{#if: {{#invoke:WLink|isBracketedLink|Zeiger.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.informit.de/books/c++21/data/kap08.htm%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.informit.de/books/c++21/data/kap08.htm%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} In: C++ in 21 Tagen. ISBN 978-3-8272-5624-9. (Vagabundierende Zeiger) Abgerufen am 22. August 2014.</ref>
Hängende Zeiger können für den Programmlauf unvorhersehbare Auswirkungen haben und das Programm zum Absturz bringen.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20140826114649
| {{#ifeq: 20140826114649 | *
| {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20140826114649}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20140826114649}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }} ({{#if: {{#if: 2022-11-16 18:10:22 InternetArchiveBot | 2022-11-16 18:10:22 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger | {{#invoke:WLink|getEscapedTitle|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}} | {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}} }}
}}}}}}}}{{#if:2022-11-16 18:10:22 InternetArchiveBot
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20140826114649|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf}}
|| {{#if: || }}
}}{{#if: Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger
| {{#if: {{#invoke:WLink|isBracketedLink|Garbage-Collection in C++ - 2.1 Probleme bei der herkömmlichen Speicherverwaltung - Hängende Zeiger}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|https://www-old.cdc.informatik.tu-darmstadt.de/lehre/SS05/seminar/C++/Bausch_GC.pdf }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Abgerufen am 22. August 2014.</ref><ref>Security Insider - Webserver durch ungültige Zeiger zum Absturz gebracht Abgerufen am 23. August 2014.</ref>
Während Userspace-Programme in der Regel bei einer Dereferenzierung eines Zeigers, der auf einen ungültigen Speicherbereich zeigt, beendet werden, kann ein solcher im Kernel bzw. dessen Modulen schlimmstenfalls das gesamte System beschädigen, ohne dass der Benutzer etwas bemerkt, bevor es zu spät ist, da keine Kontrollinstanz vorhanden ist, die z. B. das Überschreiben von fremdem Code verhindern könnte. Daher ist bei der Kernel- und Treiber-Entwicklung besonders auf die korrekte Verwendung zu achten.
Die Unvorhersehbarkeit rührt daher, dass ein Zugriff auf einen bereits freigegebenen Speicherbereich nicht zwangsläufig sofort einen Laufzeitfehler (Schutzverletzung) auslöst, da zwischen der Speicherfreigabe durch den Programmierer und der tatsächlichen Freigabe durch das Laufzeitsystem noch eine gewisse Zeit vergehen kann; ggf. ist der Speicherbereich inzwischen auch neu vergeben und ist dem Prozess tatsächlich wieder zugeteilt, aber in anderem semantischem Kontext. Findet auf (noch) erreichbaren (freigegebenen) Speicher ein Zugriff statt (Zeilen (*) im Beispiel), so löst er keinen Fehler aus. Da dies aber nicht reproduzierbar ist, sind diese sporadischen Fehler besonders schwer zu entdecken.
Beispiel
C++ <syntaxhighlight lang="cpp">
- include <iostream>
using namespace std;
int main() {
int * pPointer = new int; // Pointer vom Typ integer angelegt und Speicher im Heap reservieren
*pPointer = 10; // 10 in den Heap schreiben, an die Speicheradresse, auf die der Pointer zeigt
cout << pPointer; // Zeigt die Speicheradresse im Heap an
cout << *pPointer; // Auf die Speicheradresse im Heap zugreifen, dort lesen und dann anzeigen ("10")
delete pPointer; // Speicher auf dem Heap freigeben
cout << pPointer; // Die Zeigervariable enthält noch immer die Speicheradresse, diese wird erneut angezeigt
// => pPointer ist nun ein Dangling Pointer
cout << *pPointer; // (*) Lesender Zugriff über Pointer auf freigegebenen Speicherbereich
// => das erzeugt (hoffentlich) einen Programmabbruch; wenn nicht, wird mit
// ungültigen Daten weitergearbeitet
*pPointer = 20; // (*) Schreibender Zugriff über Pointer auf freigegebenen Speicherbereich
// => noch schlimmer: das würde (bzw. kann) andere gültige Daten überschreiben
pPointer = 0; // => pPointer ist jetzt kein Dangling Pointer mehr, er ist nun ein Nullpointer
return 0;
} </syntaxhighlight>
Es zeugt von gutem Programmierstil, nach einem delete den Pointer auf 0 zu setzen, auch wenn auf den Pointer nicht mehr zugegriffen wird.<ref> <templatestyles src="Webarchiv/styles.css" />{{#if:20131122180027
| {{#ifeq: 20131122180027 | *
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20131122180027}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20131122180027}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Zeiger. | {{#invoke:WLink|getEscapedTitle|Zeiger.}} | {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20131122180027|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.informit.de/books/c++21/data/kap08.htm}}
|| {{#if: || }}
}}{{#if: Zeiger.
| {{#if: {{#invoke:WLink|isBracketedLink|Zeiger.}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.informit.de/books/c++21/data/kap08.htm%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.informit.de/books/c++21/data/kap08.htm%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.informit.de/books/c++21/data/kap08.htm }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} In: C++ in 21 Tagen. ISBN 978-3-8272-5624-9. (Listing 8.9: Einen vagabundierenden Zeiger erzeugen) Abgerufen am 19. Januar 2021.</ref>
Siehe auch
Weblinks
- Programmieren – C-Arrays & Zeiger – Hochschule Darmstadt – FB Informatik Prof. Dr. R.Nitsch, via archive.org
Einzelnachweise
<references />