時,當試圖封裝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