我正在使用带有“void * fdata”的函数作为其输入之一。我定义了一个名为data2的结构,可以使用& alldata2将定义的结构变量传递给函数,其中alldata2是在data2下定义的结构变量的名称。
我的问题是如何将f(...,void * fdata,...)中的intput转换为函数f体中的智能指针?函数f在循环中,我在循环中使用了“#pragma omp parallel for num_threads(3)”。
我可以在函数中使用以下命令为alldata2创建一个名为dp2的原始指针:
double f(..., void* fdata, ...)
{
data2* dp2 = (data2 *)(fdata);
...
}
但该程序似乎有内存泄漏,我怀疑它是由函数f的递归计算中的dp2的创建引起的。任何帮助将不胜感激!我正在使用Visual Studio 2012 Express。
我尝试但不工作的一些方法包括:
在函数中,写
data2 * dp2 = new data2();
dp2 =(data2 *)(fdata);
在“return”命令之前删除dp2。
std :: unique_ptr * dp2(static_cast(fdata))
答案 0 :(得分:0)
我意识到我想要的是访问函数f(...,void * fdata,...)中的void指针的内容。
通过用((data2 *)(fdata))替换函数中的指针dp2,程序可以在不创建指针的情况下工作。与指针相关的可能的内存泄漏问题已经消失。
再次感谢所有回复的人:)