假设我们有一个字符数组:
char pool[1000];
和一个指针
char* ptr;
指针存储一个地址到Pool中的一个数据 block 。我想将此地址存储在池中并同时检索它。
基本上,我想要做的是一个嵌入到 char 数组池中的链表。原因是我不允许创建任何新变量(全局),我不能包含新的 header ,以及其他限制。
所以问题是:我如何在 pool[] 的前 4 个元素中分段和容纳一个 4 字节地址,以及我如何再次检索它以进行修改。强>
这个操作会经常发生,所以它需要快速......当然不能依赖外部函数。
最佳答案
要将 ptr
的值存储在 pool
中,请使用:
memcpy(pool, &ptr, sizeof(ptr));
要从 pool
中检索指针的值,请使用:
memcpy(&ptr, pool, sizeof(ptr));
回复:
This operation will happen frequently so it needs to be fast...and of course not rely of external functions.
memcpy
正是您所需要的。如果您不能使用 memcpy
,则需要在您的代码中实现确切的功能。
除非您能够验证对 memcpy
的调用是性能瓶颈,否则我建议您使用它。
关于c++ - 存储和检索 char 数组的地址/指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290057/