在c ++中拆分数组的可能性

时间:2012-10-09 02:26:37

标签: c++ arrays

我想知道数组如何在二进制级别上运行,因为我试图想出一种方法来拆分它们;意思是拿一个数组并把它变成一个链表而且我不是在谈论将一个数组转换成一个链表(复制,将旧数组转换成新数组......)我说的是无论如何有可能在一个数组中释放数据彼此阵列。

2 个答案:

答案 0 :(得分:0)

您无法释放数组中任意元素的内存,因为它是连续分配的。但是,可以通过realloc释放尾部。

答案 1 :(得分:0)

我不确定你到底想要做什么,但是你可以用任何其他连续内存块做的数组做任何事情。例如,您可以“拆分”一个数组(实际上只是指向它的一部分),如下所示:

int A[] = { 0, 1, 2, 3, 4, 5 };
int *part1 = A;
int *part2 = A + 3;

// part1[0] == 0
// part1[1] == 1
// part1[2] == 2
// part2[0] == 3;
// part2[1] == 4;
// part2[2] == 5;

当您执行此类操作时,必须小心确保不要在数组范围之外运行并导致未定义的行为。对于几乎所有情况,更好的方法是简单地使用C ++标准库提供的标准容器和算法。