C語言關於memmove 函式應用

2021-09-24 20:05:49 字數 1107 閱讀 4642

近期工程需要對音訊資料進行儲存處理,本來想採用環來節省空間,後來發現寫指標移動覆蓋之前的資料時,讀指標的位置太難判斷,乾脆採用佇列的模式,將前面不需要得資料移除,給後邊的寫指標騰出空間,如此便可保留一定長度資料,且不需管理太多空間操作。想要實現資料的前移操作自然用到了memmove()函式,本來以為資料量如果達到百萬級可能會影響效率問題,後來測試了一下,發現處理時間在毫秒級內,所以不用擔心了。以下附**,以及測試圖。

memmove()函式

函式原型:void *memmove(void *dest, const void *source, size_t count)

返回值說明:返回指向dest的void *指標

引數說明:dest,source分別為目標串和源串的首位址。count為要移動的字元的個數

函式說明:memmove用於從source拷貝count個字元到dest,如果目標區域和源區域有重疊的話,memmove能夠保證源串在被覆蓋之前將重疊區域的位元組拷貝到目標區域中。

附**標頭檔案:

#ifndef _cycquedata_h_

#define _cycquedata_h_

#include class cycquedata

;#endif

,cpp

#include "cycquedata.h"

#include #include cycquedata::cycquedata(int m_size)

cycquedata::~cycquedata(void)

void cycquedata::add(char*data,int len)

else

return;

} void cycquedata::print()//列印顯示

; char* buf = new char [max_d];

for(int i = 0;i執行截圖:

總結:執行效率在毫秒級內,可以滿足一般使用需求,所以可以不用太在乎效率問題。

C語言之memmove函式

memmove函式 void memmove void dest,const void src,size t count 和memcpy的差別就是memmove函式處理的源記憶體塊和目標記憶體塊是可以重疊的 當源記憶體首位址與目標記憶體首位址相同時,不進行拷貝 當源記憶體首位址大於目標記憶體首位址時...

C語言模擬實現memmove函式

note 它的返回值是void 引數型別也是void 這樣它才可以處理不同型別的資料。目標dest不能加const,源src加const。原因是我們需要從源src中拷貝資料到dest中,需要對dest進行賦值。若用const保護dest,便不能完成賦值操作。memmove的好處是可以處理dest與s...

C語言memcpy 函式和memmove 函式

關於 memcpy 函式,請先看鏈結。memcpy 函式和 memmove 函式的函式原型如下 void memcpy void restrict s1,const void restrict s2,size t n void memmove void s1,const void s2,size t...