我目前正在阅读Robert Love 的Linux Kernel Development。
在“15 进程地址空间”一章中,他打印了进程的内存映射。
user@machine:~$ pmap 1424
#all the processes mapped memory (skipped for readability)
bfffe000 (8KB) rwxp (0:00 0) [ stack ]
Run Code Online (Sandbox Code Playgroud)
最后一行显示堆栈(随着它向下增长)。
他现在说:
堆栈自然是可读、可写和可执行的——否则没有多大用处。
据我所知,我们将堆栈用于数据和代码地址(函数及其参数/变量)。
我不明白为什么堆栈必须是可执行的?