AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C] Pointeroperationen in C

Ein Thema von Hador · begonnen am 15. Nov 2008 · letzter Beitrag vom 26. Nov 2008
 
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [C] Pointeroperationen in C

  Alt 15. Nov 2008, 14:59
Zitat von Hador:
Zitat von Apollonius:
Ich vermute, dass der C-Compiler ein int[1] als statisches Array implementiert, d.h. auf dem Stack ablegt. Um zu dynamischen Arrays, also int[], kompatibel zu bleiben, erlaubt er p = feld weiterhin und interpretiert es als Abkürzung für p = &feld[0]. feld = p funktioniert aber nicht, weil feld als statisches Array eine feste Adresse hat. Dies ist jedoch nur Spekulation! Ich habe es nicht getestet.
Dynamische Arrays gibt es im C90 nur insoweit, dass man etwas sowas schreiben kann: int[] = {1, 2, 3}. Wirklich dynamisch ist das nicht. Aber ich werde da mal ein wenig weiterprobieren.
In C99 waren die Leute die die Spec verfasst haben auf Drogen und erlauben dynamische Arrays auf dem Stack. Also z.B. sowas hier:
Code:
int function(int i)
{
  int intarray[i];
  [...]
}
Der erzeugte Code gleicht in fast allen Fällen einem alloca, wobei alloca in fast allen Implementierungen (der Microsoft Compiler ist da die einzige mir bekannte Ausnahme) schlecht implementiert ist (eine einfache Stack Pointer Modifikation ohne irgendwelche Checks). Wenn Du es schaffst i von aussen zu beeinflussen, hast Du als "Angreifer" also volle Kontrolle über den Stackpointer und das ist im Normalfall keine sonderlich gute Idee.
Fridolin Walther
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz