gpt4 book ai didi

C - 如何将数组指针设置回第一个内存字节

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:38 25 4
gpt4 key购买 nike

我有一个struct的指针数组,处理数组后,指针在内存块的末尾。我想释放内存块,所以我需要转到第一个内存字节并再次遍历指针数组以释放数组中的每个元素。你将如何指向内存块的第一个字节?

最佳答案

您必须要么记住原始地址,要么知道您所在的位置(什么索引),这样您就可以进行足够的备份以找到开始。

第一个示例(暂时忽略,在所有这些情况下,您正在打印未初始化的值,毕竟这是一个人为示例):

int *ip = malloc (10 * sizeof (*ip));

int *origIp = ip;

printf ("%d\n", *ip++); // print and advance
printf ("%d\n", *ip++); // print and advance

ip = origIp; free (ip); // or just free (origIp) if you wish.

对于第二个:

int *ip = malloc (10 * sizeof (*ip));

int idx = 0;

printf ("%d\n", *ip++); idx++; // print and advance
printf ("%d\n", *ip++); idx++; // print and advance

ip -= idx; free (ip);

或者,您可以保持指针不变并使用数组索引来处理数组,例如:

int *ip = malloc (10 * sizeof (*ip));

int idx = 0;

printf ("%d\n", ip[idx++]); // print and advance
printf ("%d\n", ip[idx++]); // print and advance

free (ip);

无论如何,大多数现代编译器都会在幕后为您提供相同的代码。

关于C - 如何将数组指针设置回第一个内存字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004245/

25 4 0