首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SCIP优化软件中释放SCIP_SOL*和SCIP*

在SCIP优化软件中释放SCIP_SOL*和SCIP*
EN

Stack Overflow用户
提问于 2019-12-16 06:41:40
回答 1查看 80关注 0票数 1

我按如下方式初始化了scip环境:

代码语言:javascript
复制
SCIP* scip = nullptr;
SCIP_CALL( SCIPcreate(&scip) );

我创建了一个小问题来学习SCIP,我将解决方案存储在

代码语言:javascript
复制
SCIP_SOL* sol = nullptr;
sol = SCIPgetBestSol(scip);

我试图通过solscip来释放内存,但是我遇到了分段错误。

这会导致segfault:

代码语言:javascript
复制
SCIP_RETCODE retcode =  SCIPfreeSol(scip,&sol);
assert(retcode == SCIP_OKAY);


retcode = SCIPfree(&scip);
assert(retcode == SCIP_OKAY);

如果我没有在释放scip之前释放sol,它工作得很好,没有出现seg错误,但我确信它是不正确的。我已经检查了SCIP优化套件附带的一些其他代码,一些代码示例使用SCIPfreeSol,一些不使用,尽管它们都使用SCIP_SOL *sol来定义sol变量。

编辑:这个问题实际上是可行的。我没有包含实际的模型代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 06:52:24

如果解决方案是由SCIPcreateSol或类似工具创建的,则只需释放该解决方案。当您通过SCIPgetBestSol(scip)请求最佳解决方案时,这只会返回一个指向SCIP内部创建的解决方案的指针。SCIP也会释放它,所以你不必自己做这件事。同时,由于它不是您自己的解决方案,因此您不应该修改此解决方案。如果你想这样做,你应该创建你自己的或者通过SCIPcreateSolCopy复制最好的。

因此,在您的示例中只释放scip是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59348706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档