2014-03-31 23 views
2

分配的字節數:如何找到我有下面的代碼通過的malloc

int size = 0; 
void* ptr; 

ptr = malloc(9); //we want to allocate 9 bytes 

size = sizeof(*ptr); 
printf("size = %d\n", size); 

這導致大小等於1。有沒有辦法讓大小爲9

+1

有沒有便攜的方式來找到。 –

+0

我在一次採訪中被一家相當大的公司問了一會兒:1)如何爲X字節分配內存? 2)假設你擁有的只是一個指向分配內存的指針,你如何知道分配了多少空間?那麼這是一個詭計問題嗎? – fifamaniac04

+0

我不確定,這是可能的。 –

回答

1

不可以。如果您想記住malloc分配的內存大小,則應將其存儲在其他位置。

你也可以使用一個數組,然後sizeof會給你一個合適的結果......但是如果你使用void *類型,它將無法工作。

4

有沒有辦法將尺寸設置爲9?

有沒有便攜的方式來找到。

但是,如果您使用的是GNU系統(Glibc),則可以使用malloc_usable_size(3)

注意:malloc_usable_size返回的尺寸可能大於給定的尺寸malloc