2012-06-09 117 views
11

如果指定void *指针,该指定地址上分配的块的大小是多少(以前使用malloc在Linux和Windows中分配)?我希望这两个系统肯定能将这种信息存储在某个地方。也就是说,OSX/Darwin上存在的替代品malloc_size。如果有帮助,使用gcc/mingw。Linux和Windows上的malloc_size替代方案

+0

我觉得大小与在某种结构的其它东西的指针定之前右一起存储给你malloc。如果不是,它可能是一个指向这样的结构的指针,因为'free()'将需要这样的数据。 – nhahtdh

+0

@nhahtdh是的,我也希望如此,但我确切需要它。 – Cartesius00

+0

@James,如果我在Linux上使用自定义分配器启动应用程序,你会怎么做?像'LD_PRELOAD = my_super_allocator.so。/ your_app'?我的意思是,如果你会认为'void *'后面有一个预先设定的结构。 –

回答

12

在Windows上,使用MS CRT可以使用_msize的东西,在Linux上,你可以尝试malloc_usable_size ...

+0

另请参阅:http://blogs.msdn.com/b/oldnewthing/archive/2012/03/16/10283988.aspx – Anders