c - 如何使用 malloc 或其他函数在 Ram 中分配所需的地址?
问题描述
我在 C 语言面试中被问到一个问题。问题是:我可以更改地址吗?
结构节点 * 根;root=(int*)malloc(sizeof(int));
printf("%d",root) =10128000 // 新地址:root=101590000
解决方案
C 标准库的分配函数都不允许您指定要分配空间的地址。这样做是没有意义的,因为程序员不太可能知道或关心他们得到的具体地址,除非他们知道的东西已经在那里,在这种情况下它不是可用的地址。
但是,您可以分配一个大块(例如via 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);
当然,魔鬼在细节中,这些都是针对您的需求的,并且比我准备在这里介绍的要复杂得多。总的来说,这不是一个自称是初学者的真正应该尝试做的事情。
推荐阅读
- javascript - 如何使用 Dropzone 以编程方式上传图像
- progressive-web-apps - 内网 PWA
- python - 终端关闭后如何重新启动Django项目
- asp.net-mvc - jQuery Validation submitHandler 未使用手动添加的 data-val 属性触发
- java - 用java fillRect画一个像子弹计数器一样的电池
- python - 使用 main 函数计算成绩的 Python 程序
- php - 如何在条带会话 Laravel 中添加产品 ID 和名称
- arrays - 从 MIPS 中的指针数组打印元素时出错
- python - 如何授权 Tweepy 在 Twitter 上发帖?
- javascript - 无法从 firebase/storage 导入 { getStorage } 以与 React Native Expo 图像选择器一起使用