堆栈上分配的内存在释放时会被清除吗



如果我们像这样在堆栈上分配内存:

void foobar()
{
int arr[10];
}

foobar()退出之后,对该存储器块(arr(的引用丢失。但它被清零了吗?

但它设置为零吗?

否/可能。不能保证";值";未分配内存的。标准也没有任何方式保证遵守假设的";值";。

从信息安全的角度来看:如果您将私人信息存储在对象中,那么您应该假设即使在对象的存储期限之后,这些信息也可能持续存在。如果您的程序易受攻击(通常是通过未定义的行为(,攻击者可能能够访问这些信息。

否,该值未设置为零。但您甚至不应该为它烦恼,因为该值是不可访问的。它可能具有函数结束前的值,但访问它将是未定义的行为

值可能存在的原因是程序只会移动其堆栈指针。下一次堆栈到达该地址时,它将使用所需的值对其进行重写。

最新更新