Tom: C - speichersparen/ansatz

Beitrag lesen

Hello,

Kann natürlich sein, dass es Compiler gibt, die zu dämlich dafür sind.

Das relativiert diese Aussage ein wenig: Die Compiler konnten es, man musste ihnen nur richtig sagen, was man will ...

das fand ich nun doch spannender, als HTML und habe noch eine Weile die Suchmaschinen gequält :-)

http://software.intel.com/en-us/articles/intel-c-compiler-array-size-limit-on-ia-32/

Es ist eine allgemein verunsichernde Frage. Kaum ein Programmierer scheint die Mechanismen im Hintergrund wirklich zu kennen. Selbst Christian schreibt ja: "der Compiler sollte normalerweise Assembler-Code generieren...", hat also vermutlich auch noch nie nachgeschaut.

Ich möchte nochmals erinnern: Es ging um C, nicht um C++.

Nach der Lektüre vieler vieler Postings im Internet gehe ich jetzt davon aus, dass bei C die Grenze für ein dynamisch allokiertes Array bei 2^32 Bytes für die gesamte Struktur liegt (der Intel-Compiler macht ja sogar schon bei signed Integer schlapp), da die interne Adressierung scheinbar nur über das Displacement vorgenommen wird, das wiederum in ein Register passen muss.

Selbst für Maschinen mit 64-Bit-Architektur waren sich die Leute nicht einig. Da kann es natürlich dann auch am Compiler gelegen haben.

Ich würde mich freuen, wenn wir das Thema noch etwas vertiefen könnten.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de