2016-02-12 72 views
-1

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

回答

7

语句*Byte++ = 0xFF在指针指向的位置写入0xFF并推进指针本身。下一个语句打印出仍然为零的相邻字节。

+0

现在好吧,我很尴尬。我会尽快接受。 – Deepak

0

因为您在指针已经增加后致电printf,所以您总是会打印未填充的内存。

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

*字节被字节后指向下一个指针++。

相关问题