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

标签 objective-c c dynamic vector size

在obj-c中,我们可以创建 vector 对象如下:

SomeClass* example[100];

int count[7000];

但是如果我们只在初始化类时才知道 vector 的大小怎么办? (也许我们需要 example[756] 或 count[15])

最佳答案

首先,它们不是 vector 对象,它们是编译时数组。编译时数组的特性之一是自动内存管理;也就是说,您不必担心这些数组的分配和释放。

如果您想创建一个直到运行时才知道其大小的数组,您需要使用 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 并对指针使用 delete[]你用 new[x] 制作。 不要混合搭配。同样,如果您使用 std::vector,则不必担心这一点。

关于objective-c - 动态分配数组( vector 实现的动态大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199191/

相关文章:

ios - Sprite Kit-使用Switch Case将随机的Sprite节点添加到场景中

c++ - GDB 找不到源文件

java - JSON 读取内部数组

c - 在将指针传递给外部库方法后释放内存时 RtlFreeHeap 无效地址

c - 结构体动态链表中的内存分配

ios - 如何跟踪由 tableView 表示的列表中的选定项目?

ios - 更改 UIScrollVIew Content Inset 触发 scrollViewDidScroll

iphone - 在一定数量的启动后出现警报

c - 使用指定的初始化程序初始化数组时出现奇怪的值

无法将字符从指针复制到另一个指针(都分配了内存)