Come si può dire, dato un puntatore void *
, qual è la dimensione di un blocco allocato su questo dato indirizzo (precedentemente allocato utilizzando malloc
, in Linux e Windows)? Spero che entrambi i sistemi memorizzino questo tipo di informazioni da qualche parte. Cioè, alternativa di malloc_size
che esiste su OSX/Darwin. Usare gcc/mingw se aiuta.malloc_size alternativa su Linux e Windows
11
A
risposta
12
In Windows, le cose che utilizzano il MS CRT può utilizzare _msize, su Linux si potrebbe provare malloc_usable_size ...
+0
Vedi anche: http://blogs.msdn.com/b/oldnewthing/archive/2012/03/16/10283988.aspx – Anders
Penso che la dimensione viene memorizzato insieme ad altri animali in una sorta di struct giusto prima che il puntatore dato a te da malloc. In caso contrario, potrebbe essere un puntatore a tale struttura, dal momento che 'free()' avrà bisogno di tali dati. – nhahtdh
@nhahtdh Sì, lo spero anche io, ma ne ho bisogno proprio. – Cartesius00
@James, cosa farai se lancio la tua applicazione con il mio allocatore personalizzato su Linux? Mi piace 'LD_PRELOAD = my_super_allocator.so./Your_app'? Voglio dire se penserai che c'è una struttura predeterminata dietro "void *". –