不。
在C11标准不包含这个词stack,也不包含这个词heap。这意味着它不需要任何名称。
如果一个体系结构没有堆栈,它仍然必须有一种机制允许被调用的函数为其变量分配空间,即使它被递归调用。只要 CPU 允许编译器编写者以某种方式实现这样的系统,CPU 就可以支持 C。堆栈是一种处理每个函数变量分配的简单方法,但它远不是唯一可能的机制。
如果您使用的是托管实现(而不是独立实现),那么该实现需要通过malloc()、free()和朋友来支持动态内存分配。这通常是通过在“堆”上使用空间来完成的,但标准没有规定它必须如何发生,只是必须为平台适当地管理它。
许多看起来很奇怪的标准规则正是为了让不寻常的 CPU 架构能够运行标准 C。