- 设计方案阐述:
- 使用
std::unique_ptr<int[]>
来管理动态分配的内存,这样可以确保在对象生命周期结束时自动释放内存,避免内存泄漏。
- 在函数内部通过检查传入指针是否为
nullptr
以及数组的大小来进行边界检查。
- 利用
try - catch
块来处理可能抛出的异常,保证异常安全。
- 代码实现:
#include <iostream>
#include <memory>
// 函数声明
void processArray(std::unique_ptr<int[]> arr, size_t size);
int main() {
size_t size = 5;
try {
// 动态分配内存创建一维整数数组
std::unique_ptr<int[]> arr(new int[size]);
// 给数组赋值(示例)
for (size_t i = 0; i < size; ++i) {
arr[i] = i;
}
// 调用函数处理数组
processArray(std::move(arr), size);
} catch (const std::exception& e) {
std::cerr << "Exception caught: " << e.what() << std::endl;
}
return 0;
}
void processArray(std::unique_ptr<int[]> arr, size_t size) {
if (!arr) {
throw std::invalid_argument("Array pointer is nullptr");
}
// 这里可以进行数组的处理,例如打印数组元素
for (size_t i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
// 函数结束时,std::unique_ptr 会自动释放内存
}