0

我想知道数组如何在二进制级别上工作,因为我正在想办法将它们拆分;意思是把一个数组变成一个链表,我不是在谈论把一个数组变成一个链表(复制,旧数组变成新的......)我是说无论如何都可以在一个彼此排列。

4

2 回答 2

0

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

于 2012-10-09T02:31:22.077 回答
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++ 标准库提供的标准容器和算法。

于 2012-10-09T02:36:14.377 回答