我有一个结构
typedef struct
{
float m[4][4];
} myMatrix;
由于需要程序,我需要将其转换为float *
我这样做
if(! g_Fvar16)
g_Fvar16 = (float*)malloc(sizeof(float) * 16);
memcpy(&g_Fvar16, &struct_var, sizeof(float)*16);
return g_Fvar16;
这是一个简单的功能。现在,从我调用此函数的地方,程序在访问这些值时崩溃。 g_Fvar16
为float*
sizeof(struct_var)
为64,分配的内存量也是如此。
我不能简单地将复制的内存视为float *吗?我认为这将是最快的..
答案 0 :(得分:4)
g_fVer16
已经是指针,所以你必须写
memcpy(g_Fvar16, &struct_var, sizeof(float)*16);
而不是
memcpy(&g_Fvar16, &struct_var, sizeof(float)*16);
(请注意第一个&
)
答案 1 :(得分:3)
你可以使用
float *ptr = &(struct_var.m[0][0]);
用于“转换”。
您甚至可以避免执行复制,只需将程序传递给已转换的指针(但这需要您正确处理生命周期,即struct
实例应保持活动足够长的时间以使函数使用数据)