加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 动态分配数组(向量实现的动态大小)

发布时间:2020-12-16 09:36:53 所属栏目:百科 来源:网络整理
导读:在obj-c中,我们可以创建矢量对象,如下所示: SomeClass* example[100]; 要么 int count[7000]; 但是如果我们只在初始化时才知道向量的大小呢? (也许我们需要例子[756]或计数[15]) 解决方法 首先,那些不是矢量对象,它们是编译时数组.编译时阵列的一个特性是
在obj-c中,我们可以创建矢量对象,如下所示:

SomeClass* example[100];

要么

int count[7000];

但是如果我们只在初始化时才知道向量的大小呢?
(也许我们需要例子[756]或计数[15])

解决方法

首先,那些不是矢量对象,它们是编译时数组.编译时阵列的一个特性是自动内存管理;也就是说,您不必担心这些数组的分配和释放.

如果要创建一个在运行时之前不知道其大小的数组,则需要使用new []和delete []:

int size = somenumber;
int* arr = new int[size];

// use arr
arr[0] = 4;

// print the first value of arr which is 4
cout << arr[0];

问题是,在完成此数组后,您必须释放它:

delete[] arr;

如果您忘记使用相应的delete1释放new创建的内容,则会创建一个memory leak.

你可能最好使用std :: vector,因为它会自动为你管理内存:

// include the header
#include <vector>

using namespace std; // so we don't have std:: everywhere

vector<int> vec; // create a vector for ints
vec.push_back(4); // add some data
vec.push_back(5);
vec.push_back(6);

// vec now holds 4,5,and 6

cout << vec[0]; // print the first element of vec which is 4

// we can add as many elements to vec as we want without having to use any
// deallocation functions on it like delete[] or anything
// when vec goes out of scope,it will clean up after itself and you won't have any leaks

1确保在使用new创建的指针上使用delete,并使用new [x]在指针上删除[].不要混合搭配.同样,如果你使用std :: vector,你不必担心这个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读