为什么我不能写入此缓冲区?

时间:2016-02-12 13:57:23

标签: c++ c

一个非常简单的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。我错过了什么?

3 个答案:

答案 0 :(得分:7)

语句*Byte++ = 0xFF0xFF写入指针指向的位置并使指针本身前进。下一个语句打印相邻的字节,该字节仍为零。

答案 1 :(得分:0)

因为在指针已经递增后调用printf,所以总是打印未填充的内存。

*Byte = 0xFF;
printf("%u", *Byte);
++Byte;

答案 2 :(得分:-1)

* Byte 指向Byte ++之后的下一个指针。