关于strcpy,该怎么解决

关于strcpy
这代码会不会有安全隐患。


int main()
{
char *p = new char;
char str[20] = "hello world";

strcpy(p, str);

printf("%s\n", p);
return 0;
}


运行结果
关于strcpy,该怎么解决
------解决方案--------------------
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。

#include <stdio.h>
#include <string.h>
int main()
{
    char *p = new char;
    char str[20] = "hello world";

    strncpy(p, str,1);

    printf("%.1s\n", p);
    return 0;
}

------解决方案--------------------
最好new时分配大小,new char[len];你现在没出现问题是当前地址没被别的变量污染