[英]Why can't I write to this buffer?
一个非常简单的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。 我想念什么?
语句*Byte++ = 0xFF
在指针指向的位置写入0xFF
并前进指针本身。 下一条语句将打印仍为零的相邻字节。
因为在指针已经递增之后调用printf
,所以您总是打印未填充的内存。
*Byte = 0xFF;
printf("%u", *Byte);
++Byte;
* Byte指向Byte ++之后的下一个指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.