【发布时间】:2011-10-03 10:04:23
【问题描述】:
也许这是一个简单的问题,但我真的很想知道它。
如果我想在内存(堆)的特定地址存储一个值,比如一个 int,我该怎么做?
说,我想将 int 值 10 存储在 0x16 处。我想通过调用 new 或 malloc 来做到这一点: int *p=new int(10);然后我想将存储值的地址设置为0x16。起初我只是想像 &p=0x16 这样的东西,但这不起作用。我需要这样做以将一些附加信息存储在内存中某个值的前面(之前由 malloc 或 new 分配的内存空间)。
我正在使用 linux 和 C++(但 C 也可以)。
我想要实现的是:一个进程调用大小为 x 的 malloc,我想在分配的内存前存储一个特定值(大小),以便稍后(调用 free 时)访问该大小。由于调用了 malloc,我知道操作系统为值分配空间的指针,我只想将分配内存的大小存储在分配内存前面的 4 个字节中。我所做的(在我编写的 malloc 挂钩中)是分配更多内存(通过内部 mallok 调用),但我还需要能够将此大小值存储在特定位置。
感谢所有帮助。
【问题讨论】:
-
你真的真的应该阅读一些关于指针的教程
-
想要你想做的事是不合法的。除非您了解操作系统和内存分配器(显然您不了解),否则它只会崩溃或做其他意想不到的事情。告诉我们您真正想要实现的目标,而不是您认为需要做的事情。
标签: c++ c memory malloc new-operator