【问题标题】:How I return the size of the pointer that I have allocate with malloc?如何返回我用 malloc 分配的指针的大小?
【发布时间】:2011-01-29 12:17:12
【问题描述】:

看这个例子!



int main( int argc, char ** argv )
{
    int *ptr = malloc(100 * sizeof (int));

    printf("sizeof(array) is %d bytes\n", sizeof(ptr));
}

printf 函数只返回 4 个字节! 怎么了?

非常感谢!!!

【问题讨论】:

  • 各位大佬,我知道sizeof不能返回malloc分配的块数,怎么办呢?还有其他方法吗?再次感谢。
  • 不,没有可移植的方法来“询问”分配了多少内存。正如@unwind 所说,您必须自己记住。

标签: c malloc sizeof


【解决方案1】:

没有错。您正在请求并获取平台上指针的大小。

一般无法获取指针指向的内存块的大小,以后需要时自己记住。

【讨论】:

    【解决方案2】:

    您无法打印收到的内存块的大小。 malloc 分配您请求的所有内存,或者不分配(并返回 NULL)。

    sizeof() 运算符按您的要求执行:它告诉您指针的大小 - 指针本身在内存中占用 4 个字节。

    【讨论】:

      【解决方案3】:

      没有错,这是 32 位平台上任何指针的大小。

      【讨论】:

        【解决方案4】:

        在某些平台上,“msize”函数返回由 malloc/calloc/strdup 分配的区域的大小。但这不是标准的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-21
          • 1970-01-01
          • 2023-03-10
          • 2011-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多