在VC中写了一个单链表,可是运行时,显示 最可能的异常: 0xC0000005: 写入位置 0xcdcdcdcd 时发生访问冲突,请各位大侠帮忙看看:
typedef struct Member
{
CString sex;
CString  age;
CString apparment;
CString name;
}Elemtype;
typedef struct Node
{
Elemtype data;
struct Node *next;
}Lnode,*LinkList; 
LinkList head=NULL,tail=NULL;
void Creat_LinkList(LinkList &L)//创建链表
{   
    L=(LinkList)malloc(sizeof(Lnode));
    L->next =NULL;
    int j=0;//记录单链表中元素个数
    printf("输入部门,姓名,年龄");
    for(int i=1;i<=1;i++)
       {
      LinkList p=(LinkList)malloc(sizeof(Lnode));
      p->next=L->next;
      L->next =p;
 // strcpy( p->data.age,_T("1"));
  char* pStr = new char[sizeof(str) + 1]; // 动态分配内存 
  p->data.age="11";
      j++;//记录单链表的长度
        }//(逆序实现)
  
}
红色这句加上就有错误了

解决方案 »

  1.   

    不要意思,那一句是没用的,注释掉
    //char* pStr = new char[sizeof(str) + 1]; // 动态分配内存
    这句不要
      

  2.   

    LinkList p=(LinkList)malloc(sizeof(Lnode));
    // 和malloc相关的加上memset(p,0,sizeof(Lnode));
    // 就是分配的内存要初始化为0;避免写不可用的地址;
      

  3.   

    加了之后依然是这个问题
    最可能的异常: 0xC0000005: 读取位置 0xfffffffc 时发生访问冲突不知道为什么
    p->data.age="11";
    如果这一句换成是int型就没问题p->data.age=1;//ElemType里面也要改成,int age;
      

  4.   

    把你的分配改用new
    LinkList p = new Lnode;
      

  5.   

    // 分配的空间不对,sizeof(Lnode),只有5个指针的空间,也就是20个byte
    // LinkList p=(LinkList)malloc(sizeof(Lnode)); 改为 LinkList p;
    p = new Lnode;
      

  6.   

    用new分配,系统会调用各类型的构造函数,而malloc不会