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