Warum ist sizeof(int) anders als sizeof(int*)?

Frage ich mich, warum in dem folgenden Programm sizeof(int) einen anderen Wert zurückgibt als sizeof(int*).

Hier ist das kleine Programm:

int main(){
    std::cout<<sizeof(int)<<endl;
    std::cout<<sizeof(int*)<<endl;
    return 0;
}

Und hier ist die Ausgabe:

4
8

Bis jetzt erinnere ich mich an die Größe eines integer-Zeigers 4byte(gcc-compiler). Wie kann ich überprüfen Sie die korrekte Größe ein Zeiger? Ist es computer abhängig?

Bin ich unter ubuntu 12.04

# lsb_release -a

Distributor ID: Ubuntu 
Description: Ubuntu 12.04 LTS 
Release:    12.04 
Codename:   precise

Ist die Größe der Zeiger nicht konstant ist(standard-Größe) 8 bytes.

  • 64-bit-Betriebssystem?
  • Sind Sie sicher, dass alle Zeiger sind garantiert die gleiche Größe?
  • Auch die Ausgabe von uname -a oder file <your-compiled-binary>
  • FYI, es gibt keine "Standard-Größe".
  • Zeiger auf die verschiedenen Arten müssen nicht die gleiche Größe haben.
  • Charlesworth : Könnte ich ein Beispiel sehen im code. Ich bin mir nicht sicher, auf die Frage jetzt.
  • mögliche Duplikate von sizeof void-Zeiger
  • Seine einfache. int ist 4 Byte, weil es ein 32-bit-Wert. int* ist 8 bytes, weil seine Adresse im Speicher. Es noch hält nur 32-bit an Informationen.
  • Es gibt keine Garantie, dass alle Zeiger haben die gleiche Größe. Ich habe gearbeitet, auf Maschinen, auf denen char* war größer als int*, und auf Maschinen (Intel 8086), wo Funktion Zeiger hatte eine andere Größe aus den Daten-Pointer.
  • Es ist Plattform-abhängig. Die kanonischen Beispiele sind near-und far-Zeigern, oder heterogen code und Daten Zeiger auf eine Harvard-Architektur.
  • Ah, ich sehe. Vielen Dank für die Klarstellung.
  • noch hält nur 32-bit an Informationen." Was?
  • Wichtige Frage: warum hätten Sie erwartet, dass Sie die gleiche sein?

InformationsquelleAutor yogi | 2012-06-11
Schreibe einen Kommentar