Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » problem mit Zugriff auf dynamisches Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.10.2005, 21:16 Uhr
BoBtheREapER
kein job für nen BoB


tach alle zusammen
ich habe folgendes problem: Ich arbeite an einem Programm das in OpenGL verschiedene Objekte mit Hilfe von Vertex-Array und dynamischen Arrays zeichnen soll. Die Größe dieses Array (hab ich *world genannt) verändere ich mit malloc. Dann will ich world verschiedene Werte zuweisen. Verwende ich bei der Zuweisung *world mit Zeiger bekomme eine "Zugriffsverletzung" verwende ich world ohne Zeiger hab ich eine "Unzulässige Verwendung einer Fließkommerzahl". Könnt ihr mir bitte dabei helfen??


C++:
float *world[1];
//---------------------------
*world = (float*) malloc (54);  //9 floats sind 54 byte groß

*world[0]=0.0f;
*world[1]=0.5f;
*world[2]=-2.0f;

*world[3]=-0.5f;
*world[4]=-0.5f;
*world[5]=-2.0f;

*world[6]=0.5f;
*world[7]=-0.5f;
*world[8]=-2.0f;

--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu

Dieser Post wurde am 01.10.2005 um 21:17 Uhr von BoBtheREapER editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.10.2005, 22:10 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

C++:
float* world;
world = (float*) malloc (9 * sizeof (float*));  // Die 9 von mir willkürlich gewählt
world[0]=0.0f;
....
....


sollte funktionieren.


Bearbeitung von Uwe:

Eingefügt



Wenn Du C++ programmierst, warum nutzt Du nicht std::vector ?
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 01.10.2005 um 22:12 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.10.2005, 22:13 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


äh wie kommst du darauf das ein float 6 byte gross ist? davon abgesehen das ich mal glatt das gegenteil behaupten würde, das dies meist so implementiert ist (nen 48 bit rechner ist mir noch nicht gerade oft übern weg gelaufen) ist die grösse die ein float einnimmt nicht genau festgelegt.

du solltest also so allokieren..


C++:
float *world;
world = (float*) malloc(9*sizeof(float))
world[0]=0.0f;
world[1]=0.5f;
world[2]=-2.0f;

world[3]=-0.5f;
world[4]=-0.5f;
world[5]=-2.0f;

world[6]=0.5f;
world[7]=-0.5f;
world[8]=-2.0f;



noch ne kleine anmerkung zur c-syntax... wenn du schreibst float *world[1] heisst das du willst nen array aus floatzeigern haben das die größe 1 hat (also einen zeiger enthält). Wiso also ein array anlegen der Größe 1?

ach so... ich kenn mich zwar mit OpenGL nicht wirklich aus aber läuft das wirklich auch auf ner reinen c umgebung. Ich würde stark vermuten da muss schon c++ her und in dem falle würde ich dann auch nicht mehr malloc sondern new verwenden....


Bearbeitung:

kann mal einer den Uwe wieder ins Nirgendwo schicken. Der postet dreist einfach schneller als ich

hab aber noch einen kleinen Bug bei Uwe gefunden. Es muss natürlich sizeof(float) heissen.... er will ja wenn ichs richtig verstanden habe kein pointerarray von floats...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 01.10.2005 um 22:15 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.10.2005, 22:17 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,

Zitat von Windalf:
hab aber noch einen kleinen Bug bei Uwe gefunden. Es muss natürlich sizeof(float) heissen.... er will ja wenn ichs richtig verstanden habe kein pointerarray von floats...


Jepp... Ich vergaß...
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 01.10.2005 um 23:19 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.10.2005, 00:20 Uhr
Hans
Library Walker
(Operator)


Hi,

Zitat von Windalf:
äh wie kommst du darauf das ein float 6 byte gross ist?


wahrscheinlich kommt er von Turbo Pascal oder Dephi her. Zumindest in Turbo Pascal gibt es für Fliespunktzahlen den Datentyp REAL, und der ist tatsächlich 6 Byte gross.


Zitat von Windalf:
davon abgesehen das ich mal glatt das gegenteil behaupten würde, das dies meist so implementiert ist (nen 48 bit rechner ist mir noch nicht gerade oft übern weg gelaufen)


Dann musst Du mal besser gucken...


Zitat von Windalf:
ist die grösse die ein float einnimmt nicht genau festgelegt.

Das gilt AFAIK hauptsächlich in C oder C++, und ist dann wahrscheinlich von der zugrunde liegenden Hardware, sprich Prozessorarchitektur abhängig...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.10.2005, 08:25 Uhr
BoBtheREapER
kein job für nen BoB


@all: dankefür eure Hilfe funzt jetzt

@Uwe: wie funktioniert std::vector?

@Windalf: War gestern abend nicht mehr so ganz wach. Ich benutze normalerweise auch 4 byte floats, obwohl ich eine AMD Athlon 48 habe danke noch mal
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.10.2005, 13:17 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo ... (da vertipp ich mich ja bei Deinem Nick )
als kleine Einführung:
www.fun-soft.de/Download/ebooks/c++in21tagen/kap19.html#972191
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: