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;
}
Run Code Online (Sandbox Code Playgroud)
不,您不返回指向本地变量(的地址)的指针.那会是这样的
int i = 10;
return &i;
Run Code Online (Sandbox Code Playgroud)
而是返回指向堆上分配的对象的指针.
你确实有内存泄漏,因为你没有free任何内存.调用free应该由调用你的函数的代码来完成(除非它反过来返回指针值,其中责任继续上升到他的调用链).
| 归档时间: |
|
| 查看次数: |
1057 次 |
| 最近记录: |