Archiv verlassen und diese Seite im Standarddesign anzeigen : Array im Array in C?
Hi,
1.) Ist es möglich z.B. ein Array mit 100000 char-Arrays zu machen, also praktisch ein array im Array? Falls ja, kann ich das auf mehrere Ebenen ausdehnen? (Array mit einem Array was wiederum ein array beinhaltet)
Und wie geht das?
2.) Erzeugt struct overhead (speicher), oder ist es einfach eine Möglichkeit Speicher zu verwalten, aber der Compilier behandelt es wie normale Variablen?
3.) Wie "langsam" ist malloc:
Ist es recht teuer z.B. 300.000 mal 10 Bytes anzufordern? (In großen Blöcken gehts das leider nicht...).
Mfg lg
SeeksTheMoon
17-10-2002, 19:00
1.)
char meinarray[100000];
oder char *meinarray und dann mit malloc den Speicher reservieren.
Mehrdimensionales array:
char riesenarray[100000][100000];
es geht auch mehr als 2-Dimensional, fragt sich nur, ob der Programmierer dann noch Durchblick hat. Ein Array kann auch Zeiger beinhalten (also auch weitere Arrays - tob Dich aus *g*)
2.) Ein struct benötigt Speicher, der so groß ist wie der Inhalt des structs
3.) Viele kleine Schritte sind immer langsamer als ein großer. Der Speed hängt vom Rechner ab, auf dem es läuft und ob der Code vom Compiler optimiert wird, bzw. ob der Algo gut ist.
anda_skoa
17-10-2002, 19:54
Original geschrieben von ceisserer
3.) Wie "langsam" ist malloc:
Ist es recht teuer z.B. 300.000 mal 10 Bytes anzufordern? (In großen Blöcken gehts das leider nicht...).
Oder wäre das ganze im Stack zu bevorzugen? (Das wäre Möglich - mit viiieeel Aufwand)
Das Proggi sollte auch unter WinME laufen, also nicht dass mir einer mit den schellen Speicherroutinen des Linux-Kernels kommt ;-)
Wenn die 10 Byte Blöcke alle vom selben Typ sind, kannst du doch gleich den ganzen Block allokieren und dann als Array benutzen.
Ciao,
_
O.K., ich will mir ein Vokabelprogramm machen, das die Ergebnisse direkt nach der Eingabe anzeigt.
Mfg
anda_skoa
17-10-2002, 20:52
Bitte, kannst du das nochmal formulieren?
Du willst gleich nach der Eingabe anzeigen?
Wo anzeigen?
Was heitß gleich?
Wie ist die Eingabe?
Für was benutzt du 10 bytes?
Ciao,
_
The Ripper
18-10-2002, 13:00
Original geschrieben von ceisserer
Hmm, so wie bei der MS-Hilfe: Er schränkt die Ergebnisse immer weiter ein, je mehr zeichen man eingiebt, sozusagen "on the fly".
xmms macht sowas wenn man "j" drückt und den namen eines songs eingibt. du könntest also einfach schauen wie das xmms-team das realisiert hat.
anda_skoa
18-10-2002, 13:39
Man benutzt da am besten eine Baum, wo in den Knoten immer einer der Buchstaben steht und in den Blättern die Worte.
Immer die ersten x Blätter werden abgezeigt.
Wenn man dann einen Buchstaben eingibt, braucht man nur als neue Wurzel den Unterbaumknoten nehmen, der diesem Buchstaben entspricht.
Kann man alles noch optimieren.
Zum Beispiel Buchstaben zusammenfassen, die hintereinander kommen und nicht so häufig sind, etc.
Wenn die Worte in der Datei immer gleich viel Platz brauchen und es eine sehr große Datei ist, kann man eventuell mmap benutzen, um die DAtei in den Speicher zu mappen, anstatt sie zu lesen.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.