memset()函数

Kev*_*vin 2 c++

我是C/C++的初学者,我遇到了以下代码段:

#define MAX_MSG 1000
char *szBuf = new char[MAX_MSG];
char *szBufRaw = new char[MAX_MSG];
memset(szBuf, ‘\0’, strlen(szBuf));
memset(szBufRaw, ‘\0’, strlen(szBufRaw));
Run Code Online (Sandbox Code Playgroud)

我在这里阅读了关于memset的教程:

http://www.java-samples.com/showtutorial.php?tutorialid=591

我相信上面的代码是正确的,但代码的原始作者认为其中有一个错误,任何人都可以给我一个提示吗?提前致谢.

Kir*_*sky 6

strlen(szBuf)(和strlen(szBufRaw))将仅在有效字符串上返回正确的结果.你应该通过MAX_MSG.


Ste*_*ger 6

strlen()查找数组中的第一个空值,这意味着您不会在内存中设置正确的字节数.

使用MAX_MSG代替将整个数组设置为null.