关于结构体 动态分配的问题
struct s_ccab
{
char type[NAME_LEN];
char in_a[NAME_LEN];
char in_b[NAME_LEN];
char in_c[NAME_LEN];
char out_z[NAME_LEN];
char out_nz[NAME_LEN];
};
这样申请的空间
ccab = (struct s_ccab *)my_malloc(sizeof(struct s_ccab));
赋值结束后 把指针调回初始位置
打印数据后
printf("%s\n", ccab[0].type);
printf("%s\n", ccab[0].in_a);
printf("%s\n", ccab[0].in_b);
printf("%s\n", ccab[0].in_c);
printf("%s\n", ccab[0].out_z);
printf("%s\n", ccab[0].out_nz);
printf("%s\n", ccab[1].type);
printf("%s\n", ccab[1].in_a);
printf("%s\n", ccab[1].in_b);
printf("%s\n", ccab[1].in_c);
printf("%s\n", ccab[1].out_z);
printf("%s\n", ccab[1].out_nz);
结果数据就错行了 第一组对 之后每个错后一个
[解决办法]
...
每次循环分配一次
ccab = (struct s_ccab *)my_malloc(sizeof(struct s_ccab));
结果不能当
第一次是ccab[0],第二次当ccab[1]用
当然不不能保证两次分配内存是连续啦,本来就没关系
要分配出连续两个数据块要这样
每次循环分配一次
ccab = (struct s_ccab *)my_malloc(sizeof(struct s_ccab)*2);