簡體   English   中英

如何在C語言中找到動態分配的大小?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM