函数可通过返回指针提供动态数组,但应优先使用智能指针或vector以确保内存安全。

在C++中,函数可以通过返回指针的方式返回一个动态创建的数组。关键是要使用
new
函数内部使用
new
delete[]
示例代码:
#include <iostream>
using namespace std;
int* createArray(int size) {
int* arr = new int[size]; // 动态分配数组
for (int i = 0; i < size; ++i) {
arr[i] = i * 2;
}
return arr; // 返回指针
}
int main() {
int size = 5;
int* myArray = createArray(size);
for (int i = 0; i < size; ++i) {
cout << myArray[i] << " ";
}
cout << endl;
delete[] myArray; // 必须释放
myArray = nullptr;
return 0;
}
直接返回原始指针虽然可行,但容易引发内存泄漏或重复释放。以下几点需要注意:
立即学习“C++免费学习笔记(深入)”;
delete[]
更安全的做法是返回
std::unique_ptr<int[]>
#include <memory>
std::unique_ptr<int[]> createArraySafe(int size) {
auto arr = std::make_unique<int[]>(size);
for (int i = 0; i < size; ++i) {
arr[i] = i * 3;
}
return arr;
}
int main() {
auto myArray = createArraySafe(4);
for (int i = 0; i < 4; ++i) {
cout << myArray[i] << " ";
}
// 无需手动 delete,离开作用域自动释放
return 0;
}
对于大多数情况,返回
std::vector<int>
std::vector<int> createVector(int size) {
std::vector<int> vec(size);
for (int i = 0; i < size; ++i) {
vec[i] = i * 5;
}
return vec;
}
vector会自动管理内存,支持拷贝、赋值,使用更直观。
基本上就这些。原始指针可以实现需求,但现代C++更推荐智能指针或vector来避免资源管理问题。
以上就是C++函数如何返回一个动态创建的数组的指针的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号