Dan*_*Dan 1 c++ arrays pointers c++03 c++98
我必须使用许多可能的执行流修改一个非常大的方法.修改涉及使用在堆中分配char数组new.我想确保正确释放此数组,但我想避免delete[]在所有可能的执行流程中执行此操作.另外,我想为此目的做一些"更清洁"的事情,以避免未来的错误.
我曾考虑过分配数组,new然后将其包装到本地std::vector(但保留对原始指针的引用,因为该方法密集使用此引用)并让包装器在超出范围时删除原始指针.
我在这里附上一个例子.此示例的目的是显示使用原始指针执行的操作类型.
char *rawPtr = new char[1024];
std::vector wrapper(rawPtr, rawPtr + 1024); // <= Does it assure that rawPtr will be released properly?
...
for(int i = 0; i < 1024; i++)
rawPtr[i] = ...;
rawPtr += sizeof(...);
...
rawPtr -= ...;
if(...)
return ...;
return ...;
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,如果我能确定rawPtr无论程序失败,异常,传入return语句等都能正确发布.
PD.:我不能使用C++11,我对智能指针最相似的是auto_ptr这个用delete,而不是delete[].