C++ strcpy函数

函数功能把含有'\0'结束符的字符串复制到另一个地址空间。

函数声明:char *strcpy(char* dest, const char *src);

把以src为首地址NULL为结束符的数据复制到已dest开始的地址,但是,src与dest空间不能有重叠,且dest必须有足够的空间。

C++提供strcpy此类函数,为了对指针操作更加安全,避免内存泄露等异常状态的发生。

例如:

1 char *p=new char[10];
2 p="hello";
3 delete p[];//此步释放时将报错❌
 

在C++中,字符串常量"hello"被保存在常量存储区,而p="hello"操作是改变了指针的指向,使得指针p指向了常量存储区的"hello",造成了初始在堆上开辟的内存泄露,而delete无法释放常量存储区的内存,导致出错。

正确操作:

1 char *p=new char[10];
2 strcpy(p,"hello");
3 delete p[];//正确

使用strcpy函数把字符串常量"hello"赋值到p指向的空间中(初始化在堆上开辟空间)。

posted @ 2022-03-07 11:12  hik_老鬼  阅读(227)  评论(0)    收藏  举报