Was ist der Unterschied zwischen der Umwandlung (OBJ1*) (void*) p und (obj1*) p, wobei p ein Zeiger auf OBJ2 -Typ istC++

Programme in C++. Entwicklerforum
Guest
 Was ist der Unterschied zwischen der Umwandlung (OBJ1*) (void*) p und (obj1*) p, wobei p ein Zeiger auf OBJ2 -Typ ist

Post by Guest »

Hintergrund:
Ich habe dies in GCC C ++ Standard -Bibliothekserweiterungpool_Allocator.H aufgetreten, das einen Allocator -Typ enthält, der Speicherpool verwendet, um die Effizienz der kleinen Kettenspeicherzuweisung zu verbessern. In der Mitgliedsfunktion _m_refill () von __pool_alloc_base muss sich die Konvertierung von char* (die für die Verwaltung von RAW -Speicher verwendet wird) zu _obj* (welche verwendet ist die Listenknotenstruktur, die zum Verwalten des freien Stücks verwendet wird. müssen es in OBJ1 -Typ umwandeln, wobei OBJ1 und OBJ2 völlig keine Erbschaftsbeziehung haben. Es gibt zwei Möglichkeiten, dies zu erreichen: < /p>

[*]

Code: Select all

(obj1*)p

Code: Select all

(obj1*)(void*)p< /code> < /li>
< /ul>
Meine Frage ist:
Was sind die Unterschiede zwischen diesen beiden? Warum sollte GCC den zweiten Weg auswählen? > (p) 
).>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post