近期工程需要對音訊資料進行儲存處理,本來想採用環來節省空間,後來發現寫指標移動覆蓋之前的資料時,讀指標的位置太難判斷,乾脆採用佇列的模式,將前面不需要得資料移除,給後邊的寫指標騰出空間,如此便可保留一定長度資料,且不需管理太多空間操作。想要實現資料的前移操作自然用到了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...