Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

11

14.03.2008, 15:45

Ach shit ich wusste das ich da was durcheinander würfele sry. :oops: War keine absicht. War auch nur geraten. Aber mit meiner Methode würde es auch gehen...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

14.03.2008, 15:47

Zitat von »"fkrauthan"«

Ach shit ich wusste das ich da was durcheinander würfele sry. :oops: War keine absicht. War auch nur geraten. Aber mit meiner Methode würde es auch gehen...


Aber wenn dan konsequent bei malloc-free oder new/delete bleiben. Mischen ist gar nicht gut! ;)
@D13_Dreinig

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

13

14.03.2008, 15:57

Jao sorry. Ging ja um die Theorie... Auserdem tät mich mal interesiern was passiert wenn man es so schreibt. Könnte das so klappen mit new delete und malloc und free zu mischen? Weil im grunde machen ja die Funktions paare jeweils das selbe oder irre ich mich da?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

14.03.2008, 16:00

Zitat von »"fkrauthan"«

Jao sorry. Ging ja um die Theorie... Auserdem tät mich mal interesiern was passiert wenn man es so schreibt. Könnte das so klappen mit new delete und malloc und free zu mischen? Weil im grunde machen ja die Funktions paare jeweils das selbe oder irre ich mich da?


Das könnte ggf klappen, könnte aber auch nicht. Vermutlich klappt es in den meisten Fällen eher nicht. Und nein, die Funktionen machen überhaupt nicht das Selbe, sie können das Selbe tun, aber in 99% aller Fälle tun sie das nicht.
@D13_Dreinig

S.Seegel

2x Contest-Sieger

  • Private Nachricht senden

15

14.03.2008, 17:17

Zitat von »"fkrauthan"«

Weil im grunde machen ja die Funktions paare jeweils das selbe oder irre ich mich da?

Da irrst du dich. new/delete rufen Konstruktor/Destruktor auf, was malloc()/free() nicht tun. In dem Punkt unterscheiden sich auch new[]/delete[] (für Arrays) von new/delete.

Also selbst wenn - und dafür gibt es keine Garantie ! - die reine Speicherreservierung/Rückgabe funktionieren sollte, sind die beiden Paare funktional nicht äquivalent !

16

14.03.2008, 17:34

undefined behaviour
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

17

14.03.2008, 20:40

@ Stier X: Ja, du hast recht gehabt... danke
(auf die Idee mit dem Array bin ich schon gekommen, aber dann nicht damit, dass ich da eine Variable reinschreibe... :D )

thx - thx - thx - thx
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

18

14.03.2008, 20:44

Zitat von »"Stier X"«

Ich würde das dann so machen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
// Hier eine Abfrage wie viele Variablen gebraucht werden

int i; 
cin >> i;
int array[i];

// und hier auf diese Variable (x4) zugreifen (z.B. x +=1)

array[0] = 3; array[1] = 2;
array[2] = array[0]-array[1];
array[2]++;
// etc., je nach dem, was du vorhast

 

So hab ich das jetzt interpretiert. Wenn du es anders meinst, dann sags nochmal konkreter oder die anderen haben sicher auch noch ne idee.
Aber im prinziep stimmt alles. Die "Variablen" sind durchnummeriert und du kannst sie sogar ohne schleife initialisieren bzw. es ist ja ein array...


So als Randbemerkung, soweit ich mich daran erinner ( schon lange her das ich C++ wirklich verwendet habe ) geht das hier nicht

C-/C++-Quelltext

1
2
3
int i; 
cin >> i;
int array[i];


es müsste eher so sein

C-/C++-Quelltext

1
2
3
int i; 
cin >> i;
int* array = new int[i];

terrible1

Frischling

  • »terrible1« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Freyung

Beruf: Schülern

  • Private Nachricht senden

19

14.03.2008, 20:46

ich denke das geht schon
mit int array wird die Variable erzeugt und mit dem [i] dann die Anzahl festglegt (kann mich aber auch irren...)
http://www.world-of-smilies.com/smiliegen/dyn_Nobody-l-is-l-perfect-r-0D-r-0A-r-28I-r-5C-r-27m-l-Nobody-r-29_Arial.ttf_center_26_8_x_b_a_c.gif

20

14.03.2008, 20:49

Zitat von »"terrible1"«

ich denke das geht schon
mit int array wird die Variable erzeugt und mit dem [i] dann die Anzahl festglegt (kann mich aber auch irren...)


C-/C++-Quelltext

1
int array[10]; //Mein alter Kompiler hatte hier eine Konstante erwartet

Ich vermute mal das sich das noch nicht geändert hat.

Werbeanzeige