当函数返回时,通过malloc分配的内存是否被释放?或者仍然可以使用指针在main()函数中访问它?
例如.
void function(int *a)
{
a=(int *)malloc(sizeof(int));
*a=10;
}
int main()
{
int *num;
function(num);
printf("%d",*num);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
存储在a中的整数可以通过main()访问吗?
nos*_*nos 36
不,当您从函数中退出范围/返回时,不会释放分配有malloc的内存.
你有责任释放你的malloc内存.
但是在你的情况下,内存在main()中是不可访问的,但这是因为你只处理一个局部变量.
void function(int *a)
{
a=(int *)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)
这里a是一个局部变量function.指针在C中通过值传递,因此a当您执行function(num);main()时,不会看到您指定指针的本地副本,因此在main中接收指针的副本.
你必须做任何一件事:
void function(int **a)
{
*a= malloc(sizeof(int));
**a=10;
}
int main()
{
int *num;
function(&num);
printf("%d",*num);
free(num);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
要么
int* function(void)
{
int *a= malloc(sizeof(int));
*a=10;
return a;
}
int main()
{
int *num;
num = function();
printf("%d",*num);
free(num);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11962 次 |
| 最近记录: |