高手帮忙解释一下为什么会出错

skineffect 2006-08-13 04:33:34
#include<iostream>
#include<string>
using namespace std;
int main(){
int *m_szPassWord=new int(32);
memset(m_szPassWord,0,32);
for(int i=0;i<32;i++)
cout<<*(m_szPassWord+i)<<' ';
delete[]m_szPassWord;
return 0;
}
能通过编译,执行时报错,new后内存不是连续分配的吗?为什么for语句打出数组内容会出错呢?谢谢了。
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
softboysxp 2006-08-13
  • 打赏
  • 举报
回复
一个int是4bytes啊
ckt 2006-08-13
  • 打赏
  • 举报
回复
memset是对每个字节赋值,而int有4字节
如楼上说得,那样改就可以了
skineffect 2006-08-13
  • 打赏
  • 举报
回复
噢,看来概念太模糊了,谢谢了,一会给分。
triace_zhang 2006-08-13
  • 打赏
  • 举报
回复
memset(m_szPassWord,0,32); //实际内存大小应该是32 * 4字节
//memset(m_szPassWord,0,32*sizeof(int));
skineffect 2006-08-13
  • 打赏
  • 举报
回复
对不起,是我粗心了,那为什么运行的结果输出的不全是0呢?中间有三个很大的数。
输出结果:
0.....0(15个零)52189 4301832 4301832 0....0(14个0)
ckt 2006-08-13
  • 打赏
  • 举报
回复
new开辟32个int数据空间的时候语法错误了.
int *m_szPassWord=new int[32];
triace_zhang 2006-08-13
  • 打赏
  • 举报
回复
int *m_szPassWord=new int(32); //改为int *m_szPassWord=new int[32];这样才分配了32个int空间.

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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