Casting einen Zeiger auf ein int

Schreibe ich meine eigenen Funktionen für malloc und free in C für eine Zuordnung. Ich brauche, um die Vorteile der C sbrk() wrapper-Funktion. Was ich verstehen sbrk() erhöht das Programm die Daten von Speicherplatz durch die Anzahl der bytes als argument übergeben und verweist auf den Speicherort des Programms brechen.

Wenn ich den folgenden code-snippet:

#define BLOCK_SIZE 20

int x;

x = (int)sbrk(BLOCK_SIZE + 4);

Bekomme ich den compiler-Fehler warning: cast from pointer to integer of different size. Warum ist das so und ist es trotzdem kann ich warf die Adresse verweist sbrk() zu einem int?

Gibt es einen Grund, nicht zu verwenden void *x; ? Wenn Sie wirklich wollen, eine integral-Typ gibt es intptr_t x = (intptr_t)sbrk...; aus <stdint.h>
Weil int ist 32 bit, Zeiger 64 bit. versuchen Sie, verwenden Sie long int. versuchen Sie, überprüfen, sizeof(int) und sizeof(void*)

InformationsquelleAutor user3268401 | 2014-03-25

Schreibe einen Kommentar