分享|内存操作函数的实现
匿名用户
80
2024.10.08
2024.10.08
发布于 贵州

简介

「内存操作函数」memset、memcpy、memmov、memchr


memset

void *memset(void *s, int c, size_t n) {
    char *xs = s;
    while (n--) *xs++ = c;
    return s;
}

memcpy


void *memcpy(void *dest, const void *src, size_t n) {
    char *tmp = dest;
    const char *s = src;

    while (n--) *tmp++ = *s++;
    return dest;
}

memmove

void *memmove(void *dest, const void *src, size_t n) {
    char *tmp;
    const char *s;

    if (dest <= src) {
        tmp = dest; 
        s = src;
        while (n--) *tmp++ = *s++;
    } else {
        tmp = dest; 
        tmp += n; 
        s = src;
        s += n;
        while (n--) *--tmp = *--s;
    }
    return dest;
}

memcmp

int memcmp(const void *s1, const void *s2, size_t n) {
    const unsigned char *su1, *su2;
    int res = 0;

    for (su1 = s1, su2 = s2; n > 0; su1++, su2++, n--) 
        if ((res = *su1 - *su2) != 0) break;
    return res;
}

memchr

void *memchr(const void *s, int c, size_t n) {
    const unsigned char *p = s;
    while (n-- != 0) {
        if ((unsigned char)c == *p++) {
            return (void *)(p - 1);
        }
    }
    return NULL;
}

引用

https://blog.csdn.net/luobeihai/article/details/119711069


评论 (1)