2012-06-09 70 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