如果有人能帮助我完全理解以下代码之间的区别,我会非常高兴:
// Code (1)
void f1 ( void ){
int * ptr1 = malloc ( sizeof(int) );
}
和
// Code (2)
void f2 ( void ){
int * ptr2 = malloc ( sizeof(int) );
free(ptr2);
}
据我所知,指令free用于释放已使用的内存,但另一方面,每次调用函数g时,如果有新变量需要声明,则它们将在g执行后创建和销毁(即被释放了,对吗?)。
因此:
我们需要在Code(2)中使用指令free吗?还是多余的?(但也许建议使用以使代码更清晰)
谢谢
PS:您可能还有兴趣帮助我解决我的先前相关问题。在那里,一些用户建议使用动态分配内存,并且我正在尝试理解为什么/如何使用。
free
函数。 - CoderPialloca
,它在调用函数结束时会自动释放内存。然而,我从未见过它被使用。我认为这是因为大多数开发人员都认为支持alloca
所需的额外簿记不足以证明其使用,与确保您的malloc
和free
调用正确配对相比。 - DaoWenalloca()
在C标准或POSIX中没有描述。 - pmg