10/04/24 01:51:37
>>353
実装はこんな感じです。
struct my_struct* create_my_struct(int param)
{
struct my_struct* md = (struct my_struct*)malloc(sizeof(struct my_struct) + sizeof(int)*param);
md->size = param;
md->ptr = malloc(param);
return md;
}
void delete_my_struct(struct my_struct* md)
{
free(md->ptr);
free(md);
}
デメリットは、下記のような場合、memcpyが必要なことです。
int get_data(char* buf, int size)
{
struct my_struct* md = create_my_struct(size); //←ここでbufを渡せたら
int ret = memcpy(buf, md->ptr, size); //←ここでコピーしなくていい
delete_my_struct(md);
return ret;
}