memccpy return 比src起始地址低的内存地址

memccpy return lower memory address than the src starting address

我有一个学校项目,我必须重新编写 memccpy() 函数。

我使用 2 个程序来检查我的代码是否正常工作。第一个是只有一个 main 的小程序。 第二个程序是另一个同学开发的(可以找here,想看的话)

对于我的程序,没有问题,我的memccpy 和原始函数return 右指针位于dest 指针的右字符上。 但是用第二个程序,原函数return一个比dest指针起始地址低的指针地址,例如:

所以,作为某人在他的计算机上编译和我的代码 return 正确的地址,它必须来自第二个程序。

有人知道什么会导致这种行为吗?

这是我的 ft_memccpy() 函数:

void    *ft_memccpy(void *str_dest, const void *str_src, int c, size_t n)
{
    unsigned int    i;
    char            *dest;
    char            *src;
    char            *ptr;

    dest = (char *)str_dest;
    src = (char *)str_src;
    i = 0;
    ptr = 0;
    while (i < n && ptr == 0)
    {
        dest[i] = src[i];
        if (src[i] == ((char)c))
            ptr = dest + i + 1;
        i++;
    }
    return (ptr);
}

编辑:我编辑是因为我被否决了,很多用户不理解我的问题。所以我觉得还不够清楚,希望这次编辑能^^'.

应该是64位指针和32位指针的问题

你的 ft_memccpy 会 return 一个 64 位指针,所以它输出

0x7fff712edc44

虽然系统 memccpy return编辑了 32 位的

0x712edc44