最近在项目中看到不知名的某位人士调用snprintf_s 这个函数,然后尝试调用这个接口时出现了崩溃,可能接口不常用,竟然没人发现,尝试找出其中原因。
问题描述:
这段代码运行到delete 时会导致崩溃。
函数描述:
int _snprintf_s(
char *buffer,
size_t sizeOfBuffer, // 打算用于存储的缓冲区的宽度,也就指定了当前有效的缓冲区的大小
size_t count, //当后面参数得到的内容宽度超出了sizeofBuffer之后,避免缓冲区溢出,程序会自动截取count宽度的内容,并且追加一个结束符,也就是说count最多指定为sizeofBuffer-1
const char *format [,
argument] ...
);
对pbuf的内存调试发现:
第一次进for循环时时正常的
从第二次开始便会越界访问其他内存地址