【发布时间】:2012-06-13 03:27:32
【问题描述】:
如果给定一个void * 指针,如何判断在这个给定地址上分配的块的大小(以前在Linux 和Windows 中使用malloc 分配)?我希望这两个系统都能将此类信息存储在某个地方。也就是说,存在于 OSX/Darwin 上的 malloc_size 的替代品。如果有帮助,请使用 gcc/mingw。
【问题讨论】:
-
我认为大小与其他东西一起存储在某种结构中,就在 malloc 给你的指针之前。如果不是,它可能是指向此类结构的指针,因为
free()将需要此类数据。 -
@nhahtdh 是的,我也希望如此,但我正是需要它。
-
@James,如果我在 Linux 上使用自定义分配器启动您的应用程序,您会怎么做?喜欢
LD_PRELOAD=my_super_allocator.so ./your_app?我的意思是,如果您认为void*背后有一个预定义的结构。 -
@JensGustedt:它不是随机指针,而指针本身显然只存储地址,“创建者”知道有关此特定指针的额外信息。您不会将任何随机指针传递给 free() 吗?我们这里只讲malloc和朋友,不是一般的指针信息函数……
标签: c windows linux gcc malloc