结构体定义:struct mulv
{
    char mulvName[20];
};动态开辟空间:int N;
N=GetPrivateProfileInt("Test","N",0,".\\ex1.ini");//从ex1.ini文件中取出整数N;
struct mulv* lis=new mulv[N];//定义长度为N的结构体数组;使用:memcpy(lis[i].mulvName,strGrouName,20);//strGrouName定义为一个char[20]并且已经赋值;
myFile.Write(&lis,sizeof(lis));
myFile.Close();程序编译的时候没有问题,但是运行到memcpy(lis[i].mulvName,strGrouName,20);这个的时候提示Access volition是怎么回事啊 怎么处理呢?
补充:
主要问题我觉得应该是在结构体数组定义上,因为当我把定义改为struct mulv lis[20];的时候程序能正常运行;
现在我要一个动态结构体数组应该怎么做呢?

解决方案 »

  1.   

    struct   mulv*   lis=new   mulv[20];
    可以吗?
      

  2.   

    访问违规 lis[i].mulvName
    其中的i你是多少?
      

  3.   

    如果struct mulv* lis=new mulv[20]; 可以, 那说明你的N值可能没读到.
      

  4.   


    int N;
    N=GetPrivateProfileInt("Test","N",0,".\\ex1.ini");
    mulv* lis=new mulv[N];
    myFile.Read(&lis,sizeof(lis));
    myFile.Close();
    for(i=0;i<N;i++)
    {
       memcpy(str,lis[i].mulvName,20);
    }改成这样也不对哦
    还是提示Access volition
      

  5.   


    int N; 
    N=GetPrivateProfileInt("Test","N",0,".\\ex1.ini"); 
    if(N<=0){
       trace("oops, error occured!");
       return;
    }
    mulv* lis=new mulv[N]; 
    myFile.Read(&lis,sizeof(lis)); 
    myFile.Close(); 
    for(i=0;i<N;i++) 
    {
     memcpy(str,lis[i].mulvName,20); 
    }
      

  6.   

    谢谢liruda,但是我照这样改了还是出错了哦 我ex1.ini文件中的N值为1的 是读出来的哦