memset清空字符数组 失败

string ch[3] = { "abc" };
memset(ch,0,sizeof(ch));
cout << ch[0]<<endl;
字符串数组内存清空,输出为空;
但是!
char ch1[3] = { 'a' };
memset(ch1, 0, sizeof(ch1));
cout << ch1[0] << endl;
当运行以上程序时,输出仍是a,为什么memset函数没有清空内存呢?
如何改正才能正确清空内存?

在我的电脑上试了你的代码,输出为空,没有问题。

不同的编译器版本有不同的机制,导致最终结果和其他平台上面的结果不一致这样的现象。memset在这里已经将内存空间清空了,这个没有问题。

如图所示,memset()已经正确完成兄弟你的需求了

不同的编译器版本有不同的机制,导致最终结果和其他平台上面的结果不一致这样的现象。

把sizeof(ch1)打印出来看看,也许问题出在这里

在不同的编译器版本体质,会导致最终结果不一致现像

看看是否是编译器问题,重新编译一下试试

//建议改成
char ch1[3] ={'a',0};
::memset(ch1,0,sizeof(ch1));