>>354
まぁよくわからないんだけど、こんな感じにすればOK?

struct my_struct* create_my_struct(int param, char *buf)
{
 struct my_struct* md = (struct my_struct*)malloc(sizeof(struct my_struct) + sizeof(int)*param);
 md->size = param;
 md->ptr = malloc(param);
 if (buf)
  memcpy(md->ptr, buf, size);
 return md;
}


なんにせよ、構造体のサイズが不定って段階で create/delete 方式だね。
後でもっとよい実装を思いついたときにも直しやすそうだ。