一个非常简单的mmap
并写入for循环。我试图做的就是使每个字节的值为255.
#include <stdio.h>
#include <sys/mman.h>
#include <stdint.h>
#define BUFFER_SIZE 1024
int main()
{
void *Buffer = mmap(0,
BUFFER_SIZE,
PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS,
-1,
0);
uint8_t *Byte = (uint8_t *)Buffer;
for (int i = 0; i < BUFFER_SIZE - 1; ++i)
{
*Byte++ = 0xFF;
printf("%u", *Byte);
}
munmap(Buffer, BUFFER_SIZE);
return 0;
}
出于某种原因,我的输出全是0。我错过了什么?
答案 0 :(得分:7)
语句*Byte++ = 0xFF
将0xFF
写入指针指向的位置并使指针本身前进。下一个语句打印相邻的字节,该字节仍为零。
答案 1 :(得分:0)
因为在指针已经递增后调用printf
,所以总是打印未填充的内存。
*Byte = 0xFF;
printf("%u", *Byte);
++Byte;
答案 2 :(得分:-1)
* Byte 指向Byte ++之后的下一个指针。