XGBoost C API中out_shape与out_result指针的内存释放问题
XGBoosterPredictFromDMatrix 内存释放正确方式
XGBoost的C API内部有独立的内存管理机制,由XGBoosterPredictFromDMatrix分配的out_shape和out_result内存,不能用标准库的free()释放——这会因内存分配器不匹配触发双释放或段错误,必须使用XGBoost提供的XGBFree()函数来释放。
正确释放代码示例:
// 完成预测调用后,释放分配的内存 XGBFree(out_shape); XGBFree(out_result);
关键注意事项:
- 每次调用
XGBoosterPredictFromDMatrix得到的指针,都要单独调用XGBFree()释放,不能遗漏。 - 禁止对同一个指针多次调用
XGBFree(),也禁止用free()操作这些由XGBoost分配的指针。 - 若代码包含分支逻辑,需确保所有路径下的分配内存都被正确释放,避免内存泄漏或错误释放。
内容的提问来源于stack exchange,提问作者lrleon
相关产品推荐
相关产品推荐

