一级毛片免费不卡在线视频,国产日批视频免费在线观看,菠萝菠萝蜜在线视频免费视频,欧美日韩亚洲无线码在线观看,久久精品这里精品,国产成人综合手机在线播放,色噜噜狠狠狠综合曰曰曰,琪琪视频

C語言 字符串的內(nèi)存拷貝處理函數(shù) -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【m.oriental01.com - 電腦資料】

    對于字符串來說,我們運用字符串中的str類別的函數(shù),但是我們還有一些關(guān)于內(nèi)存的拷貝函數(shù),

C語言 字符串的內(nèi)存拷貝處理函數(shù)

。他們操作的對象是內(nèi)存,然后可以接受任何類型的數(shù)據(jù)進(jìn)行拷貝。

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

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

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

    ,這表示他可以拷貝任意類型的數(shù)據(jù)。

    然后我們看一下實現(xiàn):

    memcpy:

   

void *my_memcpy(void *str,const void *Dstr,int count)                         //從內(nèi)存地址開始改變,并確定改變長度,所以用萬能類型去接受{             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;}

    然后會出現(xiàn)一個問題,如果我們拷貝的數(shù)據(jù)中Dstr的起始位置在STR操作之間,那么在改變str時會出現(xiàn)副作用,將導(dǎo)致我們的拷貝結(jié)果不正確,所以我們應(yīng)該考慮到會覆蓋的情況,

電腦資料

C語言 字符串的內(nèi)存拷貝處理函數(shù)》(http://m.oriental01.com)。在函數(shù)庫中有一個memmove函數(shù)。

    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;}

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

最新文章