如何使用malloc或其他功能在Ram中分配所需的地址? [关闭]

问题描述 投票:-3回答:1

在C语言面试中我被问到一个问题。问题是:我可以更改地址吗?

struct node * root;根=(INT *)malloc的(的sizeof(int)的);

printf(“%d”,root)= 10128000 //新地址:root = 101590000

c data-structures linked-list malloc dynamic-memory-allocation
1个回答
3
投票

C标准库的分配函数都不允许您指定希望分配空间的地址。这样做是没有意义的,因为程序员不太可能知道或关心他们得到的具体地址,除非他们已知的东西已经存在,在这种情况下,它不是可用的地址。

但是,您可以分配一个大块(例如通过malloc),然后根据需要手动分配该块的块。这允许您选择相对于已分配块的基础的自己的地址。例如:

my_node *node_base = malloc(AS_MUCH_MEMORY_AS_I_NEED);

// ...

// malloc analog:
size_t an_index = choose_a_node_index_by_some_criteria();
my_node *node = node_base + an_index;

// free analog:
mark_index_available_again(an_index);

当然,魔鬼在细节中,这些都是针对你的需求而且比我准备进入这里更复杂。总的来说,这不是一个自我宣传的初学者应该尝试做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.