memset(initBriefInfo.nRecord, 0, 12);initBriefInfo是个结构体变量。nRecord是结构体中的一维数组。

解决方案 »

  1.   

    Debug一下了,看看这片内存怎么被改写了?
      

  2.   

    其它地方如果内存出错了,可能导致这种奇怪的问题,比如你前面有过类似这么个操作initBriefInfo.nRecord[i] = 0; //假设这个时候 i==-1,C++不会因越界报错的有可能导致混乱,发生一些undefined的错误,我以前碰到过。
      

  3.   

    楼上二位,initBriefInfo变量在定义时初始化了,nRecord成员赋值为0。当程序运行中,nRecord成员被赋值,在调用memset时,nRecord的前几个元素清零,可后几个没有清零。好奇怪啊。
      

  4.   

    我估计是initBriefInfo是类外的全局变量,而我在类成员函数中使用initBriefInfo变量造成的吧。
      

  5.   

    initBriefInfo.nRecord的大小是12吗?还是数组大小是12?
    initBriefInfo.nRecord的定义写出来
      

  6.   

    memset(initBriefInfo.nRecord, 0, 12);你确认initBriefInfo.nRecord占用的内存空间为12byte么?注意是单位是byte
      

  7.   

    1、nRecord 被初始化了吗?
    2、有没有其他指针指向这个地址?
      

  8.   

    #define  DEVICECOUNT   12typedef struct Briefinfo
    {
    int nRecord[DEVICECOUNT];
    ...
    }Briefinfo;Briefinfo initBriefInfo = { {0}};//定义memset(initBriefInfo.nRecord, 0, 12);//清零
      

  9.   

    如果你的nRecord是int的话,数组大小是12
    那么应该这么写
    memset(initBriefInfo.nRecord, 0, 12*sizeof(int)); 
      

  10.   


    那估计要用 memset(initBriefInfo.nRecord, 0, sizeof(int)*12);吧 
      

  11.   

    memset(&initBriefInfo, 0, sizeof(initBriefInfo));这样不可能不行吧
      

  12.   

    memset的第三个参数的单位是byte,最好要清楚这些函数的参数说明