どうすればこの作品のようにすることができますか?だから、Cの "raw"メモリから型の値を読み書きする方法は?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
どうすればこの作品のようにすることができますか?だから、Cの "raw"メモリから型の値を読み書きする方法は?
void *memory = malloc(1000); //allocate a pool of memory
*(memory+10) = 1; //set an integer value at byte 10
int i = *(memory+10); //read an integer value from the 10th byte
簡単例:あなたはあまりにも整数を使用することができますが、その後、あなたが一度に設定されているバイトの量について注意を払う必要がありますunsigned char型の配列として
void *memory = malloc(1000); //allocate a pool of memory
uint8_t *ptr = memory+10;
*ptr = 1 //set an integer value at byte 10
uint8_t i = *ptr; //read an integer value from the 10th byte
をメモリを扱います。
、「仕事」で私はあなたが「どのように私は/ void*
にポインタ演算を行う間接参照ください」という意味と仮定?できません;あなたはちょうどメモリのチャンクを読むことに関心があるならば、それをキャストする必要があります、通常char*
に。もちろん、その場合は、それを単にchar*
と宣言してください。
私は、charだけでなく、あらゆるタイプの読み書きに興味があります。 – dtech
@ddriver:それは何も変わりません。ポインタを投げる必要があります。タイプが不明な場合に、逆参照や算術演算がどのように機能すると思いますか?意味がない。基になるタイプが何であるかを知るためには、追加情報を渡す必要があります。 –
ルールは単純です:
これにより、生のポインタ演算を実行する場合、char *との間でキャストする必要があると結論づけられます。
"中間"の型付きポインタを作成する代わりに、voidポインタをキャストすることでこれを行うことはできますか? – dtech
もちろん、わかりやすくするために中間表現を使用します – ziu