BCB中String作为结构体成员
在做项目的时候,自己定义了一个这样的结构体
typedef struct info{
String a;
String b;
info* next;
}TInfo;
想用这个结构做一个自增的数组,我就这样子做
TInfo *a=(TInfo*)malloc(sizeof(TInfo));
a->a="xingmingjkhjkhdskjhfjkhjkdhfjkhskjfdhjkhfjkhdjkhjfkhjkdhkfjhjkdhfjkhkjdhf";
a->b="lihua";
a->next=NULL;
以下开始增加2个空间
TInfo *f= a;
a=(TInfo*)malloc(3*sizeof(TInfo));
memcpy(a,f,sizeof(TInfo)) ;
//f->a.~UnicodeString();
//f->b.~UnicodeString();
// free(f);
// if(f!=NULL)
free(f);
ShowMessage(a->a);
this->Edit1->Text=a->b;
free(a);
经过深入研究后发现,a所拥有的新成员a->a所存储的信息居然还是原来那块空间,即刚开始申请的那块空间,如果你不信,可以用以上红色代码测试以下,所以这样子就存在着很大的漏洞,万一原来的空间被释放掉,那么以后新申请的空间所指向的就是未知的数据了,这相当危险。也好发现的早,所以现在重新考虑还是可以避免以后的灾难的。如有不同意见,欢迎矫正。