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

22.01.2014, 13:56

scope-operator in tbMemory.cpp

Hey,

z.B. hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// ******************************************************************
// Funktion zum Reservieren von Speicher
TRIBASE_API void* tbMemAlloc(int iSize)
{
    void* pMemory;

    // Parameter prüfen
    if(iSize < 0) TB_ERROR_INVALID_VALUE("iSize", NULL);


    // Speicher reservieren und leeren. Beim Reservieren werden ein
    // paar Bytes mehr gebraucht, damit der Zeiger auf den Listeneintrag
    // mitgespeichert werden kann.
    pMemory = ::operator new(iSize + sizeof(tbListEntry<tbMemListEntry>*));
    if(pMemory == NULL) return NULL;

    g_iByteCounter += iSize + sizeof(tbListEntry<tbMemListEntry>*);
    ZeroMemory(pMemory, iSize + sizeof(tbListEntry<tbMemListEntry>*));

    // Zur Liste hinzufügen
    if(MemAddToList(pMemory, iSize)) TB_ERROR("Hinzufügen zur Liste fehlgeschlagen!", NULL);

    // Zeiger zurückliefern
    return (BYTE*)(pMemory) + sizeof(tbListEntry<tbMemListEntry>*);
}


wird new per Scope-Operator aufgerufen. Warum ist das nötig? Wo wird der äußere new-Operator überschrieben, den man mit dem Scope wieder erreichen will oder verstehe ich das ganz falsch?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

22.01.2014, 14:22

Ja, anscheinend gibt es Überladungen für den new-Operator. An dieser Stelle wird aber explizit der normale, nicht überladene new-Operator aufgerufen. Warum genau, dass musst du wohl den Autor fragen :). Wobei ich mich frage, warum mit einfach malloc genommen wird, wenn man schon selbst die Speicherblöcke verwaltet.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

22.01.2014, 18:53

Vergiss den Code am besten.
Ich war so jung und unerfahren!

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

4

22.01.2014, 19:24

Wie würdest du es denn heute machen?

5

28.01.2014, 14:32

Ja, anscheinend gibt es Überladungen für den new-Operator. An dieser Stelle wird aber explizit der normale, nicht überladene new-Operator aufgerufen. Warum genau, dass musst du wohl den Autor fragen :). Wobei ich mich frage, warum mit einfach malloc genommen wird, wenn man schon selbst die Speicherblöcke verwaltet.
Klar soweit, aber ich hab die ganze Solution durchsucht und es gibt dort keinen weiteren new-Operator. Gibts da eigentlich einen Trick, um die einfach zu finden? Goto Declaration funktioniert da ja leider nicht...

Vergiss den Code am besten.
Ich war so jung und unerfahren!
So einfach wirst du den heiligen Petrus an der Himmelspforte aber auch nicht abspeisen können, wenn er wissen will, warum du so viele Leute mit schlimmem Sourcecode gequält hast. :D

Werbeanzeige