CRT
学习于微软
新版本CRT函数具有_s(“安全”)的后缀。
例如, strcpy 函数无法验证调用字符串复制它是否超过它目标缓冲区。 但其安全副本, strcpy_s,采用缓冲区的大小作为参数,因此,它可以确定缓冲区是否溢出。
带有安全功能同样不能阻止发生安全错误, 如果使用 strcpy_s 复制为一个字符为十六进制字符缓冲区,这是在部分的错误; strcpy_s 不能更正此错误,但带有安全功能会执行进一步的检查错误状态,可以检测该错误并将调用无效参数处理程序通知您。
如果不想带有_s,可以定义 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 为 1 消除该警告调用 strcpy_s,避免缓冲区溢出。
应用举例:
#define SIZE 26
char buf[SIZE];
errno_t err;
tm gmtm;
/*
char *asctime(
const struct tm *timeptr
);
*/
asctime(&gmtm);
/*
errno_t asctime_s(
char* buffer,
size_t numberOfElements,
const struct tm *_tm
);
*/
err=asctime(buf,SIZE,&gmtm);
zhengbanxian
3.12