TRANSITION *transitions = malloc(sizeof(TRANSITION));
STATE *destination = malloc(sizeof(STATE));
transitions->destination = (struct STATE *) destination;
int new_size = sizeof(*transitions) + sizeof(TRANSITION);
printf("%d ", new_size);
transitions = realloc(transitions, new_size);
new_size是32,因为sizeof(*转换)ist 16和sizeof(TRANSITION)ist 16.现在我想要转换有32个大小的内存。realloc-call后没有变化
的问题是,如果我这样做:
printf("%d ", sizeof(*transitions));
转变的大小仍然是16为什么不是32?
'* transitions'是一个顶级元素。 – BLUEPIXY
结构的大小在编译时是固定的。 '的sizeof(*跃迁)'意味着完全一样'的sizeof(过渡)' –
与往常一样,你应该张贴在你的代码片段中使用的所有类型的定义。 'transitions-> destination =(struct STATE *)destination;'中的转换可能是不必要的。 – chqrlie