memset不能清零,高手指教 memset(initBriefInfo.nRecord, 0, 12);initBriefInfo是个结构体变量。nRecord是结构体中的一维数组。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Debug一下了,看看这片内存怎么被改写了? 其它地方如果内存出错了,可能导致这种奇怪的问题,比如你前面有过类似这么个操作initBriefInfo.nRecord[i] = 0; //假设这个时候 i==-1,C++不会因越界报错的有可能导致混乱,发生一些undefined的错误,我以前碰到过。 楼上二位,initBriefInfo变量在定义时初始化了,nRecord成员赋值为0。当程序运行中,nRecord成员被赋值,在调用memset时,nRecord的前几个元素清零,可后几个没有清零。好奇怪啊。 我估计是initBriefInfo是类外的全局变量,而我在类成员函数中使用initBriefInfo变量造成的吧。 initBriefInfo.nRecord的大小是12吗?还是数组大小是12?initBriefInfo.nRecord的定义写出来 memset(initBriefInfo.nRecord, 0, 12);你确认initBriefInfo.nRecord占用的内存空间为12byte么?注意是单位是byte 1、nRecord 被初始化了吗?2、有没有其他指针指向这个地址? #define DEVICECOUNT 12typedef struct Briefinfo{ int nRecord[DEVICECOUNT]; ...}Briefinfo;Briefinfo initBriefInfo = { {0}};//定义memset(initBriefInfo.nRecord, 0, 12);//清零 如果你的nRecord是int的话,数组大小是12那么应该这么写memset(initBriefInfo.nRecord, 0, 12*sizeof(int)); 那估计要用 memset(initBriefInfo.nRecord, 0, sizeof(int)*12);吧 memset(&initBriefInfo, 0, sizeof(initBriefInfo));这样不可能不行吧 memset的第三个参数的单位是byte,最好要清楚这些函数的参数说明 pdf文件格式,求高手解决 谁有电机自动控制界面 MFC制作一个分屏软件的主要方法 纯com组件(非activex)能否用在网页里进行加载? 请问鼠标移到联系人上面会出现联系人的一个信息框,这个信息框怎么实现? 100分求win98下区分第二块硬盘和USB盘得方法 请问在winsock编程中,如何实现端口复用比如:我想复用80端口,或提供一点相关的资料 基于SOAP协议的远程控制软件-求助 关于VToolsd talking about com ComboBoxEx的焦点问题 序列化一个列表
initBriefInfo.nRecord的定义写出来
2、有没有其他指针指向这个地址?
{
int nRecord[DEVICECOUNT];
...
}Briefinfo;Briefinfo initBriefInfo = { {0}};//定义memset(initBriefInfo.nRecord, 0, 12);//清零
那么应该这么写
memset(initBriefInfo.nRecord, 0, 12*sizeof(int));
那估计要用 memset(initBriefInfo.nRecord, 0, sizeof(int)*12);吧