看到這個例子!我如何返回我用malloc分配的指針的大小?
int main(int argc, char ** argv)
{
int *ptr = malloc(100 * sizeof (int));
printf("sizeof(array) is %d bytes\n", sizeof(ptr));
}
printf函數只返回4個字節! 有什麼不對?
非常感謝!
看到這個例子!我如何返回我用malloc分配的指針的大小?
int main(int argc, char ** argv)
{
int *ptr = malloc(100 * sizeof (int));
printf("sizeof(array) is %d bytes\n", sizeof(ptr));
}
printf函數只返回4個字節! 有什麼不對?
非常感謝!
沒有錯。您正在詢問並獲取平臺上指針的大小。
通常不可能獲得指針指向的內存塊的大小,如果以後需要它,您必須自己記住它。
沒有錯,這是32位平臺上任何指針的大小。
在某些平臺上有「msize」函數,它返回由malloc/calloc/strdup分配的區域的大小。但這不是標準。
Okey傢伙,我承諾,sizeof不能返回分配malloc的塊的數量,所以,它是怎麼回事?有另一種方法嗎? 再次感謝。 – drigoSkalWalker 2010-03-19 15:01:27
不,沒有可移植的方式來「詢問」分配了多少內存。正如@unwind所說的,你必須自己記住它。 – 2010-03-19 15:04:36
可能重複[如何從C中的指針獲取數組大小](http://stackoverflow.com/questions/232691/how-can-i-get-the-size-of-an-陣列從-A-指針在-c)的 – outis 2010-11-29 12:49:48