msc*_*msc 2 c malloc pointers function
在下面的示例中,函数func()将本地指针变量的地址返回到main()函数.它在GCC中运行良好.
那么,它是明确定义的行为吗?
#include <stdio.h>
#include <stdlib.h>
int *func(void);
int *func(void)
{
   int *p;
   p = malloc(sizeof *p);
   *p = 10;
   return p;
}
int main() 
{
    int *ptr = func();
    printf("%d\n",*ptr);
    return 0;
}
不,您不返回指向本地变量(的地址)的指针.那会是这样的
int i = 10;
return &i;
而是返回指向堆上分配的对象的指针.
你确实有内存泄漏,因为你没有free任何内存.调用free应该由调用你的函数的代码来完成(除非它反过来返回指针值,其中责任继续上升到他的调用链).