Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用CRT安全字符串函数防止逐个关闭错误_String_Visual Studio_Security_Msvcrt_Off By One - Fatal编程技术网

String 使用CRT安全字符串函数防止逐个关闭错误

String 使用CRT安全字符串函数防止逐个关闭错误,string,visual-studio,security,msvcrt,off-by-one,String,Visual Studio,Security,Msvcrt,Off By One,从VisualStudio2005开始,CRT已经用安全版本取代了大多数字符串函数,这些安全版本添加了一个size参数来指示目标缓冲区的限制。这很好,但不清楚该如何使用。包括终止零位吗?以以下代码为例: … TCHAR path[MAX_PATH] = TEXT(""); _tcscpy_s(path, MAX_PATH, filename); … 这可以吗?还是一个错误导致关闭?添加这些函数是为了防止缓冲区溢出。所以你总是指定缓冲区的大小。是的,我知道,但我不是问缓冲区溢出,特别是输入太多的

从VisualStudio2005开始,CRT已经用安全版本取代了大多数字符串函数,这些安全版本添加了一个size参数来指示目标缓冲区的限制。这很好,但不清楚该如何使用。包括终止零位吗?以以下代码为例:

…
TCHAR path[MAX_PATH] = TEXT("");
_tcscpy_s(path, MAX_PATH, filename);
…

这可以吗?还是一个错误导致关闭?

添加这些函数是为了防止缓冲区溢出。所以你总是指定缓冲区的大小。是的,我知道,但我不是问缓冲区溢出,特别是输入太多的数据,而是一个接一个的错误。他们没有明确说明大小是否应该包括终止零。例如,的注释被动地暗示大小包括终止的零,但它实际上没有在size参数中提到零。在我的示例中,我确实指定了缓冲区大小,但是_s函数应该获取MAX_PATH还是MAX_PATH-1,甚至MAX_PATH+1?