如果为安全起见,将堆初始化为零,那么为什么堆栈只是未初始化?
在我的Debian GNU / Linux 9系统上,执行二进制文件时, 堆栈未初始化,但是 堆是零初始化的。 为什么? 我认为零初始化可以提高安全性,但是,如果对于堆,为什么不对堆栈也这样做呢?堆栈也不需要安全性吗? 据我所知,我的问题并非专门针对Debian。 示例C代码: #include <stddef.h> #include <stdlib.h> #include <stdio.h> const size_t n = 8; // -------------------------------------------------------------------- // UNINTERESTING CODE // -------------------------------------------------------------------- static void print_array( const int *const p, const size_t size, const char *const name ) { printf("%s at %p: ", name, …