memset void * memset ( void * ptr, int value, size_t num ); ptr :為destination address 的pointer value :想要set的值。(居然是type int. 表示是0~255(unsign char)) num :number of bytes 這表示一次只能set 1bytes,然後寫入num個。(這真是沒效率 囧...) 這邊說錯了, 要reset值的長度用sizeof(ptr)就好了... (05/04/2011) memcpy void * memcpy ( void * destination, const void * source, size_t num ); 這ok,不過若source在copy時被overwrite時會是問題。 memmove void * memmove ( void * destination, const void * source, size_t num ); memmove跟memcpy狠像,唯一的差別是在於它能保證source不會被overwrite。 另外關於w32api中mmap的使用可以參照 這裡 ,另外也需要參考 MSDN 1) 主要有三個步驟CreateFile(), CreateFileMapping() 跟MapViewOfFile() 2) mapping的blocksize需為dwAllocationGranularity的倍數。 3) 主要是為了處理大檔(>=2**32, 2G以上),由於他的maxsize有Hi跟Low之分,要用 Hi = offset>>32, Low = offset & 0xffffffff 以轉成64bits. 4) MapViewOfFile Object 回傳ptr, 所以需要使用buffer來儲存欲處理的 data