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

1

26.10.2012, 23:36

Ich glaube, dass ich einen Fehler gefunden habe.

Hi,
ich glaube, dass ich eine Fehler gefunden habe
(2.Auflage, Kampf der Speicherlecks,S. 30, Listing):
...
// Speicherbereich um 400 Bytes vergrößern
pData = tbMemReAlloc(pData, iSize + 400);
if(!pData)
{
// Nicht genug freier Speicher!
// ...
}

// Bereich nochmals um 100 Bytes vergrößern, diesmal einfacher
pData = tbMemReAlloc(pData, -100);
if(!pData)
{
// ...
}
...


Müsste nicht anstatt den beiden tbMemReAlloc ein tbReAlloc stehen?
Weil tbReAlloc ja eigentlich für die Speicherbereich veränderung zuständig ist.
Laut Buch ist nämlich tbMemAlloc und tbMemReAlloc nur für die Speicherreservierung zuständig.
Freu mich auf jegliche Art von Antworten
.
;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

27.10.2012, 00:06

Der Code der Funktion mag etwas buggy sein, in einem der IF-Zweige, insgesamt tut sie aber das, was sie soll.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

MikeL

Frischling

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

3

06.11.2012, 21:05

Fehler in der Matrix Datei

Hallo zusammen,

bin grade dabei das Buch durchzuarbeiten und bin am Abschluss des Abschnittes Matrizen.
Ich habe jetzt die Beispiele so abgeschrieben wie sie im Buch stehen.
Bei dem Beispielcode Determinante einer Matrix berechnen, zeigt der mir an das diese Funktion zwei Argumente verlangt in dem Buch steht aber nur ein Argument.
In der Matrix.cpp Datei wird die Funktion auch nur mit einem Argument aufgerufen, in der Header Datei steht diese Funktion aber mit zwei Argumenten.
Code aus der Header Datei

C-/C++-Quelltext

1
TRIBASE_API float       tbMatrixDet(const tbMatrix& m, float* pfOut);

Aufruf in der CPP Datei

C-/C++-Quelltext

1
TRIBASE_API float tbMatrixDet(const tbMatrix& m)


Meine frage jetzt:
Welche Variante ist die Richtige?

Den wenn ich es so schreibe,

C-/C++-Quelltext

1
float fDet = tbMatrixDet(mRotation);

bekomme ich eine Fehlermeldung von meinem Compiler das die Funktion ein zweites Argument verlangt

Habe die Update Version für Visual 2010 und nutze auch Visual 2010

Liebe Grüße

Mike

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

4

07.11.2012, 18:27

gib mal nach mRotation NULL als zweites argument an.

MikeL

Frischling

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

5

07.11.2012, 19:24

Wenn ich als 2. Argument NULL angebe, bekomme ich einen Linker Error angeziegt.

1>Matrix.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) float __cdecl tbMatrixDet(class tbMatrix const &,float *)" (__imp_?tbMatrixDet@@YAMABVtbMatrix@@PAM@Z) referenced in function _WinMain@16
1>D:\3D-Spieleprogrammierung-Update\Eigene Projekte\Matrix\Matrix(Debug).exe : fatal error LNK1120: 1 unresolved externals

Habe das Projekt so eingerichtet, wie es in der ReadMe Datei beschrieben wurde,
Wenn ich in der tbMatrix.h Datei, bei der Funktion tbMatrixDet das 2. Argument entfernen Läuft das Programm ohne Fehler.

Hast du noch eine andere Idee birdfreeyahoo?

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

6

07.11.2012, 20:53

Das zweite Argument sollte gar nicht da sein, weil es ja schon float zurück gibt.
Bei mir ist in der Header der float-Pointer da, in der Source nicht, funktioniert aber...

MikeL

Frischling

Beiträge: 21

Beruf: Einzelhandelskaufmann

  • Private Nachricht senden

7

07.11.2012, 21:15

Mh irgendwie verstehe ich das nicht. Warum es bei anderen läuft aber hier bei mir nicht.
Der sagt mir immer zu wenig Argumente wenn ich es mit einem Argument schreibe.

Aber selbst in der Source Datei von tbMatrix wird diese Funktion immer mit nur einem Argument aufgerufen und er bemängelt es nicht.
Was ich absolut nicht verstehen kann.

Ich mein der muss es doch selbst da bemängeln das ihm was fehlt bzw das die Funktion in der Form gar nicht Existiert.

Werbeanzeige