void PrintArray()
{
int a[4] = {4,3,1,5};
for(int i=0; i<4; i++)
cout<<a[i];
}
在函数调用完成之后,分配给指针变量“a”和“a”所指向的4整数块的内存究竟发生了什么?
块和指针变量的内存是否会被取消分配,还是会导致某种形式的内存泄漏?
最佳答案
a
不是静态变量,它是automatic
变量,来自draft C99 standard节6.2.4
对象的存储持续时间第4段说:
在第3段中,它将static
的生存期描述为程序的生存期,在第5段中说:
因此,换句话说,对于自动变量,其生存期扩展到其作用域,在这种情况下,a
的作用域是PrintArray
函数,并且在退出该作用域后会释放与其关联的存储。
对于C++,draft standard中的相关部分是3.7.3
自动存储持续时间第1段说: