gpt4 book ai didi

c++ - 堆腐败问题

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:24 26 4
gpt4 key购买 nike

在我的模板函数中,我有以下代码:

TypeName myFunction()
{

TypeName result;
void * storage = malloc( sizeof( TypeName ) );

/*Magic code that stores a value in the space pointed to by storage*/

result = *(TypeName *)storage;

free( storage );
return result;
}

这会导致“检测到堆损坏”错误。如果我不调用 free() 函数,则不会发生错误,但我担心会造成内存泄漏。正确的方法是什么返回“storage”的值然后释放内存?

最佳答案

您不需要分配存储,您可以将您的result 变量传递给一个函数来执行您的魔法操作。像这样。

void magic(void *buffer)
{
// magic stuff
}

TypeName foo()
{
TypeName result;
magic(&result);
return result;
}

或者当然你可以将你的 TypeName 结构设置为位域或任何你的魔术代码操作......

关于c++ - 堆腐败问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com