繁体   English   中英

为什么我不能写这个缓冲区?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM