冰楓論壇

標題: [C] memory 相關的函式(memset, memcpy, memmove) - 轉載 [打印本頁]

作者: whitefox    時間: 2023-5-28 15:15
標題: [C] memory 相關的函式(memset, memcpy, memmove) - 轉載
本帖最後由 whitefox 於 2023-5-29 13:02 編輯

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

------------------------------------
轉載 http://danjog.blogspot.com/2009/ ... memcpy-memmove.html




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓