如何在c语言中找到动态分配的大小



写一个函数来查找动态创建的*变量的确切大小?

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]=%cn",size,c[size]);
    }
}
int main()
{
    int len=10;
    char *c = malloc(len);
    strcpy(c,"hello");
    myfunc(c,len);
    free(c);
}

相关内容

  • 没有找到相关文章

最新更新