用自定义函数实现strcpy功能,运行时报错

问题遇到的现象和发生背景 用自定义函数实现strcpy功能。运行时报错,但结果时是正确的
问题相关代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<assert.h>

char* my_strcpy(char*p1,char*p2)
{
    assert(p1 != NULL);
    assert(p2 != NULL);
    char* ret = p1;
    while (*p2 != '\0')
    {
        * p1 = * p2;
        p1++;
        p2++;
    }
    *p1 = *p2;
    return ret;
}

int main()
{
    char arr1[] = "abcdef";
    char arr2[] = "bit";
    my_strcpy(arr2, arr1);
    printf("arr2=%s\n", arr2);
    return 0;
}

运行结果及报错内容

img

我想要达到的结果 无报错

试一下 strcpy 的源码

char* strcpy(char * DstString, const char* SrcString)
{
    char* String = DstString;
    
    /* Move bytes brute force */
    
    while (*SrcString)
    {
        *String = *SrcString;
        
        String++;
        SrcString++;
    }
    
    /* Null terminate */
    
    *String = 0;
    return (DstString);
}