你的第一个main函数:
strcpy(al->Check->UserName,"MyName");
这个访问方式不对,应该是:
strcpy(al.Check->UserName,"MyName");
当然,这不是主要的问题,主要问题正如你所说,没有为al.Check分配内存空间,也就是al.Check的值是乱码,al.Check所指向的内存空间你是无权操作的,所以会导致非法内存的访问。
理了一下你的思路,你的意思是说希望能定义一个AL_t的结构体变量之后到使用UpdateData函数操作它之前,你还需要做太多的操作,希望简化这些操作?是吧?
方案一:
将
typedef struct
{
Check_t *Check;
}AL_t;
改为
typedef struct
{
Check_t Check;//直接定义成值类型
}AL_t;
方案二:
参照面向对象的方式:构造->使用->析构
#include
写一个初始化函数:
init_AL_t(AL_t* t)
{
t->Check=(Check_t*)malloc(sizeof(Check_t));
}
删除函数
destroy_AL_t(AL_t* t)
{
free(t->Check);
}
这种方式不太推荐,因为使用完后一定要free,不然会内存泄露,改变Check时也要free,否则同样会有内存泄露的问题。
如果你能精简下你的问题,重新组织下文字,就容易找到你的问题并回答了