このような作品を作るにはどうすればよいですか?
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
このような作品を作るにはどうすればよいですか?
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
簡単な例:メモリをunsignedcharの配列として扱います
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
整数も使用できますが、一度に設定するバイト数に注意する必要があります。
ルールは単純です:
このことから、「生の」ポインタ演算を実行する場合は、char*との間でキャストする必要があると結論付けることができます。
したがって、「作業」とは、「ポインタ演算を逆参照/実行するにはどうすればよいか」という意味だと思いますvoid*
。できません; char*
通常、メモリのチャンクの読み取りだけに関心がある場合は、キャストする必要があります。もちろん、その場合は、最初にそれを宣言するだけchar*
です。