2016-02-12 136 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

*字節被字節後指向下一個指針++。

相關問題