我们如何从给定的内存指针中找到MEMORY SIZE?

siv*_*iva 5 c

void func( int *p)
{
  // Add code to print MEMORY SIZE which is pointed by pointer P.
}
int main()
{
  int *p = (int *) malloc (10);
  func(p);
}
Run Code Online (Sandbox Code Playgroud)

如何从func()中的内存指针P找到MEMORY SIZE?

sle*_*man 10

在C语言中没有合法的方法(或者我相信甚至是C++).是的,不知何故free知道malloc编辑了多少,但它以一种程序员看不到或无法访问的方式.对于程序员来说,它可能也是通过魔法完成的!

如果您决定尝试解码malloc和free所做的事情,那么它将引导您前往专有编译器实现.请注意,即使在相同的操作系统上,也可以使用不同的编译器(甚至是相同编译器的不同版本,甚至是相同的编译器,但使用第三方malloc实现(是的,存在这样的事情)).