memset填充内存不一定正确,特别是数据比较大时

kejie1235 2012-11-27 03:20:08
bool *flag = new bool[1002];
memset(flag, false, sizeof(flag));
for(int j=0; j<1002;j++)
printf("%d ",flag[j]);

以下是输出的结果:
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alwgg 2012-11-27
  • 打赏
  • 举报
回复
sizeof(flag)的长度等于4 所以前面的4个字节已经被填充成0了,所以是正确的

bool *flag = new bool[1002]; 
memset(flag, false, 1002);
for(int j=0; j<1002;j++)
    printf("%d ",flag[j]);
这样试试
kejie1235 2012-11-27
  • 打赏
  • 举报
回复
对,谢谢。是我犯2了,sizeof(指针)==4 ,后面的根本就没有填充。
dhdahai 2012-11-27
  • 打赏
  • 举报
回复

memset(flag, false, sizeof(flag));
sizeof(flag) == 4;

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧