时,当试图封装C API在C++方法如何安全处理数组指针,我发现了一个问题抛出异常:抛出异常
int status;
char* log = nullptr;
int infoLogLength;
getFooStatus(&status);
getFooLogLength(&infoLogLength);
if (!status) {
log = new char[infoLogLength];
getFooLog(infoLogLength, log);
throw std::runtime_error(log);
}
我不允许修改的接口方法以任何方式。
从我的理解,我需要预留内存的方法来填充,并对其进行操作。然而,抛出异常将从方法返回,而不是让我释放资源。我的代码是否正确,或者我应该以其他方式解决这个问题?
如果这是C++,你为什么不使用字符串:
这可以通过使用嵌套得到缓解? –
@RedAlert正如我所提到的,我被C api强制 - 我尝试使用字符串内部存储作为char数组,但无济于事。我可能会错过一些东西。 – kejran