JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=c137d7f38160f03f759b602c0ba45e20Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Speicherbereiche reservieren?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 15:48    Titel: Speicherbereiche reservieren? Antworten mit Zitat

Wie kann ich nur Speicher reservieren?

ich möchte gar keinen Datentyp x-mal als Feld anlegen, sondern einfach einen Speicherbereich.. Geht das?

Oder wie kann ich sonst einen Datentyp anlegen, der 100* long int entspricht. Will mit sehr großen Werten rechnen aber dafür gibt es noch keine Datentypen und string-mathematik wird zu langsam werden will das ganze auf binärer Ebene rechnen... Oder kann ich dann auch so tun als ob new int[100]; eine einzige Zahl ist?

Vielen Dank für eure Hilfe! Smile
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mazze
JLI'ler


Alter: 39
Anmeldedatum: 02.01.2004
Beiträge: 145

Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 16:27    Titel: Re: Speicherbereiche reservieren? Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
Wie kann ich nur Speicher reservieren?

ich möchte gar keinen Datentyp x-mal als Feld anlegen, sondern einfach einen Speicherbereich.. Geht das?


jo (hab ich gerade in nem Thread davor was zu geschrieben Wink)
Einfach nur Speicher kannst du mit VirtualAlloc reservieren...und mit VirutalFree wieder freigeben...wie die funktionen genau aussehen weis ich nicht Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mr.X
Junior JLI'ler



Anmeldedatum: 15.04.2003
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 18:00    Titel: ... Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
...Will mit sehr großen Werten rechnen aber dafür gibt es noch keine Datentypen...


7,2 * 10 hoch 75 (32-bit-REAL) reicht Dir wohl nicht? ^^


@Speicherreservierung
Einen Datentyp wirst Du immer angeben müssen. Die Funktion, die Dir entsprechen sollte wird wohl malloc(...) sein. Du reservierst halt entsprechend Speicher in Länge Byte * Deiner notwendigen Größe und castest dann den Pointer auf diesen Speicherbereich je nachdem, wieviel Bits Du gerade auslesen willst. (Wobei das Casten auch nur auf vorgefertigte Datentypen funktionieren wird, und nicht zum Beispiel 45 Bit usw.)

Als Beispiel für Deine Angabe von 100 * long int
---> int* MeinSpeicher = (int*) malloc(100*sizeof(long int));
So hast Du einen DW-Pointer auf Deinen Speicherbereich.

P.S.
100 * long int? Was soll denn das für eine Zahl werden? Willst Du die Staatsverschuldung unseres Landes darstellen? ^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 21:59    Titel: Re: ... Antworten mit Zitat

Mr.X hat Folgendes geschrieben:

7,2 * 10 hoch 75 (32-bit-REAL) reicht Dir wohl nicht? ^^


Wie heißt der Datentyp dann genau, denn ich kenne nur das hier als höchsten Zahlenwert:

Code:
long zahl= 9999999999999999999;

also ungefähr 10^18

aber ich will mindestens mit so großen Werten rechnen können wie mit meinem normalen Taschenrechner, der bis 10^99 rechnen kann Razz
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 22:23    Titel: Antworten mit Zitat

Also das könnte recht schwer werden. du müsstes deinen eigenen datentyp basteln... und so großze zahlen zu speichern kann eventuell sehr schwer sein (wenn man sie byte für byte lesen/schreiben muss)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 23:20    Titel: Re: ... Antworten mit Zitat

TheMillenium hat Folgendes geschrieben:
aber ich will mindestens mit so großen Werten rechnen können wie mit meinem normalen Taschenrechner, der bis 10^99 rechnen kann Razz
Dazu kannst du ganz normal Double nehmen. Damit kannst du bis ca. 10^300 Rechnen. Wie auch bei jedem Taschenrechner ist dann aber die Genauigkeit in den Extremzahlgebieten dahin. (Du kannst mit einem Taschenrechner z.B. nicht (1.2*10^80) + 1 Ausrechnen, da das Ergebniss immernoch 1.2*10^80 ist...)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 23:27    Titel: Re: ... Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
TheMillenium hat Folgendes geschrieben:
aber ich will mindestens mit so großen Werten rechnen können wie mit meinem normalen Taschenrechner, der bis 10^99 rechnen kann Razz
Dazu kannst du ganz normal Double nehmen. Damit kannst du bis ca. 10^300 Rechnen. Wie auch bei jedem Taschenrechner ist dann aber die Genauigkeit in den Extremzahlgebieten dahin. (Du kannst mit einem Taschenrechner z.B. nicht (1.2*10^80) + 1 Ausrechnen, da das Ergebniss immernoch 1.2*10^80 ist...)


bei double geht bei mir aber leider auch nur maximal:
Code:
double zahl = 9999999999999999999;


Sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 10.01.2004, 23:46    Titel: Antworten mit Zitat

richtig, solange du eine genauigkeit von 1 haben willst. Du kannst aber als Double auch speichern
Code:
double Zahl=1.0e+34; // entspricht 10000000000000000000000000000000000

Aber dann kannst du eben nicht mehr mit einer genauigkeit von 1 rechnen, also wäre dann
Code:
Zahl++;
nicht möglich.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum