让我们假设以下代码:
#include<stdlib.h>
void func1()
{
int a=2;
int b=3;
int c=4;
}
void func2()
{
int *ptr;
ptr = (int *)malloc(3 * sizeof(int));
}
int main()
{
func1();
printf("Point 1\n");
func2();
printf("Point 2\n");
}
我的问题是:
答案 0 :(得分:1)
执行以下命令后,分配给变量a,b和c(它们是“ func1”中的局部变量)的内存会发生什么情况? 主要功能中的“ func1”?
局部变量存储在堆栈存储器中,并在函数退出时弹出。
在执行“ func2”之后,分配给“ ptr”的内存(在“ func2”中是本地的)会发生什么情况?
“ malloc”在堆上分配内存,因此程序退出后其他进程将无法使用此内存。 因此,是的,您应该在退出之前释放分配的内存。
资源: