>>628
struct Hohho *p = (struct Hohho *)malloc(sizeof(struct Hohho)+(N-1)*sizeof(int));

sizeとdataの間に詰め物がはいる可能性があるからこうで。
(N-1 となってるのは間違いでそ)