重囗另类BBWSeⅹHD,av狼论坛,精品一卡2卡三卡4卡乱码理论,体育生gv老师浪小辉3p警察

C語言 字符串的內存拷貝處理函數 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ipr-jzsc.com - 電腦資料】

    對于字符串來說,我們運用字符串中的str類別的函數,但是我們還有一些關于內存的拷貝函數,

C語言 字符串的內存拷貝處理函數

。他們操作的對象是內存,然后可以接受任何類型的數據進行拷貝。

    這個是里面的memcpy,然后我們一起查看一下MSDN看一看他的原型:

    void *memcpy(void *dest,const void *src,size_t count);

    與strcpy不同的就是添加了第三個參數,確定操作的字節數,然后參數類型還有返回類型都是void*

    ,這表示他可以拷貝任意類型的數據。

    然后我們看一下實現:

    memcpy:

   

void *my_memcpy(void *str,const void *Dstr,int count)                         //從內存地址開始改變,并確定改變長度,所以用萬能類型去接受{             char *pstr = (char *)str;             char *pDstr = (char *)Dstr;            assert((str!=NULL) && (Dstr != NULL));             if(str == Dstr)                                         //位置相同情況下直接返回需要改變的                         return (char *)Dstr;             while(count-- > 0)            {                        *pstr++ = *pDstr++;            }             return str;}

    然后會出現一個問題,如果我們拷貝的數據中Dstr的起始位置在STR操作之間,那么在改變str時會出現副作用,將導致我們的拷貝結果不正確,所以我們應該考慮到會覆蓋的情況,

電腦資料

C語言 字符串的內存拷貝處理函數》(http://www.ipr-jzsc.com)。在函數庫中有一個memmove函數。

    memmove:

   

void *my_memmove(void *pst,const void *Dpst,int size){                       void *p = pst;             char *pstA = (char *)pst;             char *pstB = (char *)Dpst;            assert((pst != NULL) &&(Dpst != NULL));             if(pstB<pstA< pstB+size)            {                                     while(size--)                        {                                    *(pstA+size) = *(pstB+size);                        }            }             else            {                         while(size--)                        {                                    *pstA++ = *pstB++;                        }            }             return p;}

    就是遇到被拷貝的空間起始處在拷貝空間中,將會遇到拷貝內存覆蓋的現象。在這種情況下我們將考慮從尾部進行拷貝。所以進行了判斷。

最新文章
主站蜘蛛池模板: 衡山县| 承德县| 融水| 海林市| 陈巴尔虎旗| 山东| 汕头市| 米脂县| 长白| 靖宇县| 罗定市| 武安市| 明星| 怀仁县| 商都县| 依兰县| 任丘市| 青河县| 留坝县| 汉阴县| 伊宁市| 剑河县| 普宁市| 鄢陵县| 和政县| 沈阳市| 大理市| 庆云县| 吐鲁番市| 上犹县| 精河县| 娄烦县| 渑池县| 兴仁县| 大厂| 宁远县| 原阳县| 桃园县| 清河县| 驻马店市| 广丰县|