进程应该自己创建自己的堆栈是不是很糟糕?如果内核不想这样做。
喜欢这里
_start:
mov $stack_head, %rsp
jmp main
.data
.align 8
stack:
.quad 0
.quad 0
.quad 0
.quad 0
stack_head:
或使用malloc系统调用。
答案 0 :(得分:1)
不,不是这样的。有些系统甚至需要它。 但是,如果可能的话,遵循惯例总是一个好主意。
我认为为程序准备另一个堆栈并不危险 - 即使在linux中也是如此。 Linux无论如何都设置了一个堆栈(除非你明确说“不,谢谢”)。但最好小心不要与堆栈混淆。
对于Linux或Windows,它不是一个好的和美好的想法,因为它违反了约定。还有一些(不必要的)麻烦。
在许多RTOS中,您必须自己设置堆栈。
答案 1 :(得分:0)
有些操作系统甚至需要像这样设置堆栈。
然而malloc()不起作用,因为像malloc()这样的函数通常需要一个已设置的堆栈指针。
在Linux下 - 例如 - 这样做是一个非常糟糕的主意,因为Linux会观察堆栈指针并在需要时自动分配更多内存。如果像这样移动堆栈指针,可能会导致程序崩溃。