我正在尝试内存泄漏。当我从zsh运行以下程序时,它会启动并在一段时间后终止。 zsh在做吗?谁决定何时杀死它?
app.controller("MyController", ['$scope', 'http'
答案 0 :(得分:1)
这取决于你如何运行它,但通常是在malloc
返回NULL
之后(如果无法分配新内存)并且你试图写一个值时,操作系统会杀死你的进程( 5
)到那个地址。所以基本上它是一个NULL
指针取消引用,你的代码试图访问地址NULL
的内存。
从哲学上讲,正是程序员决定编写错误代码并使程序崩溃。 : - )
编辑:另一方面,如果操作系统(或其程序员)试图过度使用内存到您的进程,它可能仍然是错误。例如,默认情况下,在Linux中启用了内存过量使用。这意味着,即使操作系统没有可用内存,也可以通过让内存分配方法成功并实际尝试在进程首次访问时分配内存来谎言。这可能会导致malloc
成功并返回非NULL
值的情况,稍后当进程尝试访问该内存时,操作系统将尝试分配它。如果操作系统失败,则它必须阻止/暂停该过程或将其终止。 Linux通常会运行其臭名昭着的OOM杀手,它会在内存分配失败时选择要杀死的进程。杀戮的过程往往是分配大量内存的过程。