#include
using namespace std;
/*memcpy函式用於資源記憶體(src指向的記憶體)拷貝到目標記憶體(desc指向的記憶體);拷貝的個數size
用法::(1)可以拷貝任何型別的物件,因為函式的引數型別是void* ,由於函式拷貝是乙個位元組乙個
位元組拷貝,實際操作是將void*強制轉換成了char*,這樣才能保證每一次加乙個指標
*///實現,未考慮記憶體重疊情況
void* memcpy1(void * desc, const void * src, size_t size)
unsigned char* desc1 = (unsigned char*)desc; //將void*轉成unsigned char*型別
unsigned char* src1 = (unsigned char*)src; //將void*轉成unsigned char*型別
while (size-->0)
return desc;
}//考慮記憶體重疊的情況
void* memcpy2(void* desc, const void * src, size_t size)
unsigned char* desc1 = (unsigned char*)desc;
unsigned char* src1 = (unsigned char*)src;
//當記憶體重疊時,從後往前複製
if(desc > src && desc1 < (src1 + size))//記憶體發生重疊
}else
}return desc;
}//memset內部實現memset(void*s,int ch,size_t n)
/*將s所指向的某一塊記憶體中的前n個位元組的內容全部設定為ch指定的ascii值,返回s*/
void * memset1(void * ptr, int value, size_t n)
char *s = (char*)ptr; //定義乙個指標來接str;輔助指標
while (n--)
return ptr;
void* memset(void* dst,int val, size_t count)
return ret;
}
memcpy memset 注意事項
深度探索c 物件模型 不管使用memcpy 還是memset 都只有在 classes不含任何由編譯器產生的內部members 時才能執行。如果這個類宣告乙個或者乙個以上的virtual function,或者內含乙個virtual base class,那麼使用這兩個函式將會導致那些 被編譯器產生...
WaitForSingleObject函式的使用
程式舉例 1 建立對話方塊應用程式,專案名稱為mytestthread 2 新增按鈕,命名為啟動和停止,在對話方塊中增加編輯框,id為idc time,3 增加成員變數,handle m hthread 2 此為執行緒的控制代碼 4 定義全域性變數,用來控制線程的執行與否 volatile bool...
cvCreateVideoWriter函式使用
cvcreatevideowriter函式使用 2011 11 04 15 47 例如,cv fourcc p i m 1 是mpeg 1 codec,cv fourcc m j p g 是motion jpeg codec cv fourcc m p 4 2 mpeg 4.2 codec cv f...