Tut sizeof(float) immer gleich sizeof(int) auf allen Architekturen?

Bin ich zu sehen-code zuweisen von Speicher für Schwimmer mit sizeof(int).

Ich Frage mich, ob sizeof(float) immer gleich sizeof(int) auf allen Architekturen?

float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))

Hinweis: diese USER_DEFINED_MALLOC isa-wrapper für konventionelle malloc, denke ich.

Dank

Hinsichtlich

  • Sollte man gar nicht erst zu kümmern. Wenn Sie reservieren, ein schweben, verwenden Sie die Größe einer float. Außerdem sizeof(*ptr) sollte verwendet werden, anstelle von sizeof(int) sowieso.
  • Nein - es sind 64-bit-Plattformen, die ILP64, wo int 8 bytes, aber schwimmen ist noch immer 4 bytes. Es gibt auch 16-bit-Plattformen, wo int ist 2 Byte und float sind immer noch 4 Byte.
  • Denken Sie auch daran, dass die Datentypen sind nicht gebunden an eine Architektur. Sie sind definiert durch eine beliebige Daten-Modell, und technisch, jeder kann kommen mit einer neuen für jede CPU-Architektur. Die gängigsten Datenmodelle, die auf 64-bit-Plattformen setzen long auf 64 bit und int bei 32 bit, aber das ist nur, weil es bequem ist, nicht weil einige technische Einschränkung.
InformationsquelleAutor elgnoh | 2012-08-06
Schreibe einen Kommentar