在类中构造函数构造字符型数组
class Base
{
protected:
char *name;
int math;
int english;
public:
Base(char *p)
{
name=new char[strlen(p)+1];
strcpy(name,p);//strncpy_s(name,10,p,10);
}
virtual ~Base()
{
delete []name;
}
其中Base的构造函数,创建了一个指针p,用来接受一个字符指针 p 作为参数,初始化name的字符数组,该数组是从字符串怕复制而来。
name=new char[strlen(p)+1];
strlen是计算p的字节,+1是为了在字符串的末尾添加一个空字符('\0')
strcpy(name,p);这一步是将字符串p复制到name中
但这样并不安全,使用strncpy_s(name,10,p,10);更安全,但要注意如果字符串 p 的长度小于10,那么 strncpy_s 函数不会添加空字符,这可能导致未定义的行为。为了避免这个问题,你可能需要确保 p 的长度至少为10,或者使用不同的方法来复制字符串。
如何保证内存安全,有待进一步研究

浙公网安备 33010602011771号