[英]How to find Dynamically allocated size in c language?
編寫一個函數來查找動態創建的*變量的確切大小?
Guys it is working but for static allocation only...
int alp=0;
printf("%d",(char*)(&alp+1)-(char*)(&alp));
它將返回4個正確的大小,這是32位計算機上int的大小,但不適用於動態分配的指針變量。
char *c=(char *)malloc(12*sizeof(char));
如何找到* c的大小,實際上這里是12 ?
請幫助我編寫一個函數來查找動態分配的內存。
唯一的簡短答案是您不能這樣做。 您只需要自己跟蹤即可。
無法以編程方式知道在對malloc()
的調用中分配了多少字節。 您需要分別跟蹤該大小,並在需要的地方傳遞該大小。
例如:
void myfunc(char *c, int size)
{
int i;
for (i=0;i<size;i++) {
printf("c[%d]=%c\n",size,c[size]);
}
}
int main()
{
int len=10;
char *c = malloc(len);
strcpy(c,"hello");
myfunc(c,len);
free(c);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.