6.3w+
社区成员
//很明显,你是通过malloc申请空间的,
gpersonalinfo->pina=(char*)malloc(1000);
gpersonalinfo->names=(char*)malloc(1000);
gpersonalinfo->sex=(char*)malloc(1000);
gpersonalinfo->birth=(char*)malloc(1000);
gpersonalinfo->workdate=(char*)malloc(1000);
gpersonalinfo->retiredate=(char*)malloc(1000);
gpersonalinfo->salary=0;
gpersonalinfo->annuity=0;
gpersonalinfo->areacode=(char*)malloc(1000);
gpersonalinfo->companyid=(char*)malloc(1000);
int* result=pic_personal_cm(0,gevn,gpersonalinfo);
if (result!=0)
{
MessageBox(NULL,"开始返回","Project.dll提示",0);
//这里的赋值有意义吗?只是将字符串的首字母赋给ppersonalinfo_Out里面的成员字符变量???
ppersonalinfo_Out->pins=*gpersonalinfo->pina;
cout < <*gpersonalinfo->names < <endl;
ppersonalinfo_Out->names=*gpersonalinfo->names;
cout < <ppersonalinfo_Out->names < <endl;
ppersonalinfo_Out->sexs=*gpersonalinfo->sex;
ppersonalinfo_Out->birth=*gpersonalinfo->birth;
ppersonalinfo_Out->workdate=*gpersonalinfo->workdate;
ppersonalinfo_Out->retiredate=*gpersonalinfo->retiredate;
ppersonalinfo_Out->salary=gpersonalinfo->salary;
ppersonalinfo_Out->annuity=gpersonalinfo->annuity;
ppersonalinfo_Out->areacode=*gpersonalinfo->areacode;
ppersonalinfo_Out->companyid=*gpersonalinfo->companyid;
//这里delete gpersonalinfo会造成内存丢失吧,应该先显示的将gpersonalinfo里面的5个char*指向的堆空间
// free掉,注意malloc申请的,只能用free,最后在delete gpersonalinfo;
delete gpersonalinfo;
//这样子问题就有了:
char *p = new char[5]; //字符串数组;
pA pTest;
pTest.p= p;
A aTest;
aTest.ch=*pTest.p;
cout<<aTest.ch<<endl;
delete [] p;
这样子没有问题;
struct A
{
char ch;
};
struct pA
{
char* p;
};
int main()
{
char *p = new char;
pA pTest;
pTest.p= p;
A aTest;
aTest.ch=*pTest.p;
delete p;
}